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:
—
ステフェイン・グーリッホン
static
ヘッダーファイルに保持します.h
。これは、「オブジェクトではなくクラスに添付されている」ことを意味static
し、.cpp
ファイルから削除します。ここでは、別の意味を持たせます。
static
、.cppファイルからキーワードを削除する必要があります。C ++では許可されていません。