我已经创建了自己的Vector和Array类,我已经测试过并且工作正常。但是,在以下代码中,我在访问AccountInfo类中的方法时遇到问题。 _accounts声明如下:
Vector<AccountInfo*> _accounts[200]; // store up to 200 accounts
之前,_accounts只是AccountInfo类型。切换到向量后,使用_accounts的每个实例都有错误:Expression必须具有指针类型。
这是我的代码:
ostream& operator << (ostream& s, UserDB& A){
// print users
for (unsigned int i = 0; i < A._size; i++){
//print name
s << A._accounts[i]->getName() << endl;
}
return s; // return the statement
}
//---------------------------------------------------------------------------- --------------------
//Destructor of UserDB
UserDB::~UserDB(){
for (int i = 0; i < _size; i++){
delete[] _accounts[i]; // delete objects in _accounts
}
}
//------------------------------------------------------------------------------------------------
// add a new user to _accounts
void UserDB::adduser(AccountInfo* newUser){
_accounts[_size] = newUser;
_size++; //increment _size.
if (newUser->getUID() > 0){
//print if UID has a value
cout << newUser->getName() << " with " << newUser->getUID() << " is added." << endl;
}
else {
newUser->setUID(_nextUid); //automatically set UID for user if empty
cout << newUser->getName() << " with " << newUser->getUID() << " is added." << endl;
_nextUid++;
}
}
有没有办法从变量_accounts中访问AccountInfo方法?
答案 0 :(得分:1)
您使用以下内容定义了一个向量数组:
Vector<AccountInfo*> _accounts[200]; // store up to 200 accounts
这与声明一个容量为200的单个向量不同。如果您使用标准向量,那么它看起来像:
std::vector<AccountInfo*> _accounts(200); // store up to 200 accounts