开发者

Cannot call member function without object = C++

I am brushing up again and I am getting an error:

Cannot call member function without object.

I am calling like:

FxString text = table.GetEntry(obj->GetAlertTextID());
FxUChar outDescription1[ kCP_DEFAULT_STRING_LENGTH ];

IC_Utility::CP_StringToPString(text, &outDescription1[0] );

The line: IC_Utility::CP_StringToPString(text, &outDescription1[0] ); 开发者_JS百科is getting the error

My function is:

void IC_Utility::CP_StringToPString( FxString& inString, FxUChar *outString)
{
}

I know it has to be something simple I am missing.


If you've written the CP_StringToPString function, you need to declare it static:

static void IC_Utility::CP_StringToPString( FxString& inString, FxUChar *outString)

Alternatively, if it's a function in third-party code, you need to declare an IC_Utility object to call it on:

IC_Utility u;
u.CP_StringToPString(text, &outDescription1[0] );


Your method isn't static, and so it must be called from an instance (sort of like the error is saying). If your method doesn't require access to any other instance variables or methods, you probably just want to declare it static. Otherwise, you'll have to obtain the correct instance and execute the method on that instance.


You have to declare the function with the 'static' keyword:

class IC_Utility {
    static void CP_StringToPString( FxString& inString, FxUChar *outString);


You need to declare the function static in your class declaration. e.g.

class IC_Utility {
   // ...

   static void CP_StringToPString(FxString& inString, FxUChar *outString);

   // ...
};


"static" is the right answer. or, you can pass it a NULL "this" pointer if it's not used in the function:

((IC_Utility*)NULL)->CP_StringToPString(...);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜