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.
static
di file header .h
, itu berarti "terlampir ke kelas, bukan ke objek apa pun", hapus static
di .cpp
file, itu memiliki arti berbeda yang tidak Anda inginkan di sini.
static
kata kunci dalam file .cpp. C ++ tidak mengizinkannya.