Saya mengalami sedikit kesulitan bekerja dengan metode statis di C ++
Contoh .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);
};
Contoh .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;
}
}
Saya ingin menelepon seperti:
IC_Utility::CP_StringToPString(directoryNameString, directoryName );
Tapi saya mendapat kesalahan:
error: cannot declare member function 'static void IC_Utility::CP_StringToPString(std::string&, unsigned char*)' to have static linkage
Saya tidak mengerti mengapa saya tidak bisa melakukan ini. Adakah yang bisa membantu saya memahami mengapa dan bagaimana mencapai apa yang saya inginkan?
/* static */. Saya suka memiliki pengubah dan argumen default yang sama dalam file .h dan .cpp.
staticdi file header .h, itu berarti "terlampir ke kelas, bukan ke objek apa pun", hapus staticdi .cppfile, itu memiliki arti berbeda yang tidak Anda inginkan di sini.
statickata kunci dalam file .cpp. C ++ tidak mengizinkannya.