web-dev-qa-db-ja.com

オブジェクトなしでメンバー関数を呼び出すことはできません= 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)
{
}

私はそれが私が見逃している単純なものでなければならないことを知っています。

14
jDOG

CP_StringToPString関数を記述した場合は、それをstaticと宣言する必要があります。

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

または、サードパーティコードの関数の場合は、IC_Utilityオブジェクトを宣言して呼び出す必要があります。

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

メソッドは静的ではないため、インスタンスから呼び出す必要があります(エラーが言っているようなものです)。メソッドが他のインスタンス変数またはメソッドへのアクセスを必要としない場合は、おそらくstaticと宣言するだけです。それ以外の場合は、正しいインスタンスを取得して、そのインスタンスでメソッドを実行する必要があります。

10
Blair Conrad

'static'キーワードを使用して関数を宣言する必要があります。

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

クラス宣言で関数staticを宣言する必要があります。例えば.

class IC_Utility {
   // ...

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

   // ...
};
1