[英]Cannot call member function without object = C++
我再次刷牙,我收到一个错误:
无对象无法调用成员函数。
我打电话给:
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)
{
}
我知道它必须是我想念的简单事物。
如果您已编写CP_StringToPString
函数,则需要将其声明为static
:
static void IC_Utility::CP_StringToPString( FxString& inString, FxUChar *outString)
或者,如果它是第三方代码中的函数,则需要声明一个IC_Utility
对象来调用它:
IC_Utility u;
u.CP_StringToPString(text, &outDescription1[0] );
您的方法不是静态的,因此必须从实例调用(有点像错误所说)。 如果您的方法不需要访问任何其他实例变量或方法,您可能只想将其声明为static
。 否则,您必须获取正确的实例并在该实例上执行该方法。
您必须使用'static'关键字声明该函数:
class IC_Utility {
static void CP_StringToPString( FxString& inString, FxUChar *outString);
您需要在类声明中声明函数static
。 例如
class IC_Utility {
// ...
static void CP_StringToPString(FxString& inString, FxUChar *outString);
// ...
};
“静态”是正确的答案。 或者,如果它没有在函数中使用,你可以传递一个NULL“this”指针:
((IC_Utility*)NULL)->CP_StringToPString(...);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.