
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));
现在我的问题是
删除了个人信息.
如果这与我怀疑它有什么关系,那么这个函数包含在“Class”头(Declartion)中.
此外,我不知道为什么,但我不能让“代码”框正确适合.
解决方法 您不能将这些函数创建为静态(没有大量调整),因为您试图修改特定实例的数据.要解决您的问题:class CPlayer{public: // public members // since you are operating on class member data,you cannot declare these as static // if you wanted to declare them as static,you would need some way of getting an actual instance of CPlayer char* GetPlayernameEx(int playerID); char* GetPlayername(int playerID,char* name,int size);private: // note: using a std::string would be better char m_name[MAX_PLAYER_name];};// note: returning a string would be better herechar* CPlayer::GetPlayernameEx(int playerID){ char* name = new char[MAX_PLAYER_name]; memset(name,MAX_PLAYER_name,0); GetPlayername(playerID,m_name,sizeof(m_name)); std::string sname(m_name); std::replace(sname.begin(),sname.end(),'_',' '); ::strncpy(sname.c_str(),MAX_PLAYER_name); return name;}// in your usageCPlayer player;// ...sprintf(string,player.GetPlayernameEx(playerID)); 总结 以上是内存溢出为你收集整理的c – 非静态成员函数的非法调用全部内容,希望文章能够帮你解决c – 非静态成员函数的非法调用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)