Ich habe ein wenig Probleme bei der Arbeit mit statischen Methoden in C++
Beispiel .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);
};
Beispiel .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;
}
}
Ich wollte telefonieren wie:
IC_Utility::CP_StringToPString(directoryNameString, directoryName );
Aber ich bekomme einen Fehler:
error: cannot declare member function 'static void IC_Utility::CP_StringToPString(std::string&, unsigned char*)' to have static linkage
Ich verstehe nicht, warum ich das nicht kann. Kann mir jemand helfen, zu verstehen, warum und wie ich das erreiche, was ich will?
Entfernen Sie das Schlüsselwort static
in der Methodendefinition. Behalten Sie es einfach in Ihrer Klassendefinition.
static
Schlüsselwort in CPP-Datei bedeutet, dass eine bestimmte Funktion eine statische Verknüpfung hat, dh. Auf sie kann nur von anderen Funktionen in derselben Datei zugegriffen werden.
Die Schlüsselwörter static
und virtual
sollten in der Definition nicht wiederholt werden. Sie sollten nur in der Klassendeklaration verwendet werden.
Sie müssen static
nicht in der Funktionsdefinition haben