Tôi gặp một chút khó khăn khi làm việc với các phương thức tĩnh trong C ++
Ví dụ .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);
};
Ví dụ .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;
}
}
Tôi muốn thực hiện một cuộc gọi như:
IC_Utility::CP_StringToPString(directoryNameString, directoryName );
Nhưng tôi gặp một lỗi:
error: cannot declare member function 'static void IC_Utility::CP_StringToPString(std::string&, unsigned char*)' to have static linkage
Tôi không hiểu tại sao tôi không thể làm điều này. Bất cứ ai có thể giúp tôi hiểu tại sao và làm thế nào để đạt được những gì tôi muốn?
/* static */
. Tôi thích có cùng các sửa đổi và đối số mặc định trong các tệp .h và .cpp.
static
trong tệp tiêu đề .h
, nó có nghĩa là "được gắn vào lớp, không phải với bất kỳ đối tượng nào", xóa static
trong .cpp
tệp, nó có một ý nghĩa khác mà bạn không muốn ở đây.
static
từ khóa trong tệp .cpp. C ++ không cho phép nó.