Tôi đang gặp rắc rối với chức năng dưới đây:cuộc gọi trái phép hàm thành viên không tĩnh
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;
}
khai:
char* GetPlayerNameEx(int playerid);
sử dụng:
sprintf(string, "%s", CPlayer::GetPlayerNameEx(playerid));
Bây giờ vấn đề của tôi ở đây là
Thông tin cá nhân bị xóa n.
Nếu điều này có bất cứ điều gì để làm với nó mà tôi nghi ngờ nó, chức năng này được chứa trong một tiêu đề "Class" (Declartion).
Ngoài ra tôi không biết tại sao nhưng tôi không thể nhận được hộp "Mã" để vừa với chính xác.
Bạn có [hành vi undefined] (http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope) . Tôi sẽ trả về một 'std :: string'. – chris
Chức năng GetPlayerNameEx có được khai báo bên trong không gian tên CPlayer hay là tên lớp CPlayer? – Amadeus
@chris: theo trình biên dịch, chương trình của OP là trên thực tế không thành lập. Đối với một hành vi không xác định xảy ra, nó nhất thiết phải biên dịch và chạy đầu tiên. –