Невозможно вызвать функцию-член без объекта = С++
Я снова очищаю и получаю сообщение об ошибке:
Невозможно вызвать функцию-член без объекта.
Я звоню как:
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(...);