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

时间:2010-07-21 22:23:08

标签: c++ function compilation

我再次刷牙,我收到了一个错误:

无对象无法调用成员函数。

我打电话给:

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)
{
}

我知道它必须是我想念的简单。

5 个答案:

答案 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(...);