Невозможно вызвать функцию-член без объекта = С++

Я снова очищаю и получаю сообщение об ошибке:

Невозможно вызвать функцию-член без объекта.

Я звоню как:

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

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

Строка: IC_Utility:: CP_StringToPString (текст, & outDescription1 [0]); получает ошибку

Моя функция:

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

Я знаю, что это должно быть что-то простое, что мне не хватает.

Ответы

Ответ 1

Если вы написали функцию CP_StringToPString, вам нужно объявить ее static:

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

В качестве альтернативы, если это функция в стороннем коде, вам нужно объявить объект IC_Utility для вызова:

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

Ответ 2

Ваш метод не является статичным, и поэтому он должен вызываться из экземпляра (вроде того, как говорит ошибка). Если ваш метод не требует доступа к каким-либо другим переменным или методам экземпляра, вы, вероятно, просто хотите объявить его static. В противном случае вам нужно будет получить правильный экземпляр и выполнить метод в этом экземпляре.

Ответ 3

Вы должны объявить функцию с ключевым словом static:

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

Ответ 4

Вам нужно объявить функцию static в объявлении класса. например.

class IC_Utility {
   // ...

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

   // ...
};

Ответ 5

"статический" - правильный ответ. или вы можете передать ему указатель NULL "this", если он не используется в функции:

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