我再次刷牙,我收到了一个错误:
无对象无法调用成员函数。
我打电话给:
FxString text = table.GetEntry(obj->GetAlertTextID());
FxUChar outDescription1[ kCP_DEFAULT_STRING_LENGTH ];
IC_Utility::CP_StringToPString(text, &outDescription1[0] );
行:IC_Utility :: CP_StringToPString(text,& outDescription1 [0]);得到错误
我的功能是:
void IC_Utility::CP_StringToPString( FxString& inString, FxUChar *outString)
{
}
我知道它必须是我想念的简单。
答案 0 :(得分:22)
如果您已编写CP_StringToPString
函数,则需要声明static
:
static void IC_Utility::CP_StringToPString( FxString& inString, FxUChar *outString)
或者,如果它是第三方代码中的函数,则需要声明一个IC_Utility
对象来调用它:
IC_Utility u;
u.CP_StringToPString(text, &outDescription1[0] );
答案 1 :(得分:10)
您的方法不是静态的,因此必须从实例调用它(有点像错误所说)。如果您的方法不需要访问任何其他实例变量或方法,您可能只想声明它static
。否则,您必须获取正确的实例并在该实例上执行该方法。
答案 2 :(得分:3)
您必须使用'static'关键字声明该函数:
class IC_Utility {
static void CP_StringToPString( FxString& inString, FxUChar *outString);
答案 3 :(得分:1)
您需要在类声明中声明函数static
。 e.g。
class IC_Utility {
// ...
static void CP_StringToPString(FxString& inString, FxUChar *outString);
// ...
};
答案 4 :(得分:-3)
“静态”是正确的答案。或者,如果它没有在函数中使用,你可以传递一个NULL“this”指针:
((IC_Utility*)NULL)->CP_StringToPString(...);