//in header file(in User class):
int howManyOpponents =0;
User** userArray; //(which is initialized to userArray = new User*[5] in the constructor)
//in class file:
void User::addWin(User* aUser)
{
userArray[howManyOpponents] =aUser;
howManyOpponents++;
}
//in main file
int maximumUser = 20;
User* userList[maximumUser];
(*userList[i]).addWin(userList[j]);
codeclocks停止工作,我已经将问题追溯到User :: addWin并尝试了许多不同的引用或指向设置但无法处理它。可能有一个简单的错误。 谢谢。
答案 0 :(得分:1)
User* userList[maximumUser];
创建一个maximumUser
User
指针数组。没有构建User
的实际实例。
然后尝试使用其中一个未初始化的指针调用方法,导致崩溃:
(*userList[i]).addWin(userList[j]);
要修复,请创建一个实际User
个实例的数组(假设User
的构造函数不需要参数):
User userList[maximumUser];
userList[i].addWin(userList[j]);
答案 1 :(得分:0)
考虑通过引用传递参数,而不是通过指针传递它们。尽量避免在代码中使用原始的poiters。如果你真的需要指针,请考虑使用智能指针。
答案 2 :(得分:0)
以下是有关如何使用指针数组的示例:
size_t maxUsers = 5;
size_t maxUserLen = 48;
char** UserList = 0;
// First, allocates a array of pointers
UserList = new char*[maxUsers];
// Second, allocates each pointers in the array of pointers
for(size_t i=0; i<maxUsers; i++)
{
UserList[i] = new char[maxUserLen];
memset(UserList[i], 0, maxUserLen);
}
// Add user
const char* user1 = "Mike";
const char* user2 = "James";
strcpy(UserList[0], user1); // First element in the list
strcpy(UserList[1], user2); // Second element in the list, etc...