繁体   English   中英

没有object = C ++就无法调用成员函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM