指向对象的指针向量,不能访问对象数据字段。 (表达式必须有指针类型)

时间:2015-02-12 20:28:15

标签: c++ pointers vector

我已经创建了自己的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方法?

1 个答案:

答案 0 :(得分:1)

您使用以下内容定义了一个向量数组:

Vector<AccountInfo*> _accounts[200]; // store up to 200 accounts

这与声明一个容量为200的单个向量不同。如果您使用标准向量,那么它看起来像:

std::vector<AccountInfo*> _accounts(200); // store up to 200 accounts