gpt4 book ai didi

c++ - 非法调用非静态成员函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:09:47 25 4
gpt4 key购买 nike

我在使用下面这个函数时遇到了问题:

char* GetPlayerNameEx(int playerid)
{

char Name[MAX_PLAYER_NAME], i = 0;

GetPlayerName(playerid, Name, sizeof(Name));

std::string pName (Name);

while(i == 0 || i != pName.npos)
{
if(i != 0) i++;
int Underscore = pName.find("_", i);
Name[Underscore] = ' ';
}
return Name;
}

声明:

char* GetPlayerNameEx(int playerid);

用法:

sprintf(string, "%s", CPlayer::GetPlayerNameEx(playerid));

现在我的问题是

已删除个人信息。

如果我怀疑它与它有任何关系,则此函数包含在“类” header (声明)中。

我也不知道为什么,但我无法让“代码”框正确地覆盖。

最佳答案

非静态成员函数的非法调用意味着您试图在不使用包含该函数的类的对象的情况下调用该函数。

解决方案应该是使函数成为静态函数。

这通常是导致错误 C2352 的原因:

class MyClass {
public:
void MyFunc() {}
static void MyFunc2() {}
};

int main() {
MyClass::MyFunc(); // C2352
MyClass::MyFunc2(); // OK
}

如果将其设为静态不适合您,那么您必须创建类 CPlayer 的实例。

像这样:

CPlayer myPlayer;
myPlayer.GetPlayerNameEx(playerid);

关于c++ - 非法调用非静态成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18369972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com