C ++에서 정적 메서드를 사용하는 데 약간의 문제가 있습니다.
예 .h :
class IC_Utility {
public:
IC_Utility();
~IC_Utility();
std::string CP_PStringToString( const unsigned char *outString );
void CP_StringToPString( std::string& inString, unsigned char *outString, short inMaxLength );
static void CP_StringToPString( std::string& inString, unsigned char *outString);
void CP_StringToPString( FxString& inString, FxUChar *outString);
};
예 .cpp :
static void IC_Utility::CP_StringToPString(std::string& inString, unsigned char *outString)
{
short length = inString.length();
if( outString != NULL )
{
if( length >= 1 )
CPLAT::CP_Utility::CP_CopyMemory( inString.c_str(), &outString[ 1 ], length );
outString[ 0 ] = length;
}
}
나는 다음과 같이 전화를 걸고 싶었다.
IC_Utility::CP_StringToPString(directoryNameString, directoryName );
그러나 오류가 발생합니다.
error: cannot declare member function 'static void IC_Utility::CP_StringToPString(std::string&, unsigned char*)' to have static linkage
나는 왜 이것을 할 수 없는지 이해하지 못한다. 누구나 내가 원하는 것을 달성하는 이유와 방법을 이해하도록 도울 수 있습니까?
@Fezvez : 또는로 교체하십시오
—
David Thornley
/* static */
. .h 및 .cpp 파일에 동일한 수정 자와 기본 인수를 사용하는 것이 좋습니다.
TL; DR :
—
Stéphane Gourichon 21
static
헤더 파일에 보관하십시오. .h
"객체가 아닌 클래스에 연결됨"을 의미 static
하고 .cpp
파일 에서 제거 하십시오. 여기서 원하지 않는 다른 의미가 있습니다.
static
, .cpp 파일에서 키워드를 제거해야 합니다. C ++에서는 허용하지 않습니다.