मुझे C ++ में स्थिर विधियों के साथ काम करने में थोड़ी परेशानी हो रही है
उदाहरण।
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
मुझे समझ नहीं आता कि मैं ऐसा क्यों नहीं कर सकता। क्या कोई मुझे यह समझने में मदद कर सकता है कि मुझे क्यों और कैसे हासिल करना है?
/* static */
। मुझे .h और .cpp फ़ाइलों में समान संशोधक और डिफ़ॉल्ट तर्क रखना पसंद है।
static
हेडर फाइल में रखें .h
, इसका अर्थ है "क्लास से जुड़ा हुआ है, किसी वस्तु से नहीं", फाइल static
में निकालें .cpp
, इसका एक अलग अर्थ है जो आप यहाँ नहीं चाहते हैं।
static
.cpp फ़ाइल में कीवर्ड को निकालना चाहिए । C ++ इसकी अनुमति नहीं देता है।