Я повторяю снова, и я получаю ошибку:
Не может назвать функцию членства без объекта.
Я звоню как:
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)
{
}
Я знаю, что это должно быть что-то простое, которое я пропускаю.
Если вы написали функцию CP_StringToPString
, вам нужно объявить ее static
:
static void IC_Utility::CP_StringToPString( FxString& inString, FxUChar *outString)
Или, если это функция в стороннем коде, вам нужно объявить объект IC_Utility
, чтобы вызвать его:
IC_Utility u;
u.CP_StringToPString(text, &outDescription1[0] );
Вам нужно объявить функцию static
в объявлении класса. например,
class IC_Utility {
// ...
static void CP_StringToPString(FxString& inString, FxUChar *outString);
// ...
};
Ваш метод не является статическим, и поэтому он должен вызываться из экземпляра (вроде того, о чем говорит ошибка). Если ваш метод не требует доступа к другим переменным или методам экземпляра, вы, вероятно, просто хотите объявить его static
. В противном случае вам придется получить нужный экземпляр и выполнить метод на этом экземпляре.
Вы должны объявить функцию с помощью ключевого слова static:
class IC_Utility {
static void CP_StringToPString( FxString& inString, FxUChar *outString);
"static" - правильный ответ. Или, вы можете передать ему указатель NULL "this", если он не используется в функции:
((IC_Utility*)NULL)->CP_StringToPString(...);