错误“没有指定成员”

hel*_*rld 1 c++

我有这段代码

账户.cpp

#include "account.h"
#include <iostream>
#include <string>  

using namespace std;

Account::Account(string firstName, string lastName, int id)
    : strFirstName(firstName), strLastName(lastName), nID(id) {}

void Account::printAccount(){
    cout << strFirstName;
}
Run Code Online (Sandbox Code Playgroud)

帐户.h

#include <string>

using std::string;

class Account{
private:
    string strLastName;      //Client's last name
    string strFirstName;     //Client's first name
    int nID;                //Client's ID number
    int nLines;             //Number of lines related to account
    double lastBill;
public:
    Account(string firstName, string lastName, int id);
        void printAccount();
};
Run Code Online (Sandbox Code Playgroud)

公司.h

#ifndef CELLULAR_COMPANY_H
#define CELLULAR_COMPANY_H

#include <string>
#include <list>
#include <iostream>
#include "account.h"

using namespace std;

class Company {
private:
    list<Account> listOfAccounts;
public:
    void addAccount(string firstName, string lastName, int id) {
        Account newAccount(firstName, lastName, id);
        listOfAccounts.push_back(newAccount);
    }

    void printAccounts(){
        for(list<Account>::iterator i = listOfAccounts.begin(); i != listOfAccounts.end(); ++i){
            i.printAccount;           //here bug
        }
    }
};


#endif // CELLULAR_COMPANY_H
Run Code Online (Sandbox Code Playgroud)

主程序

#include "cellularcompany.h"

int main(){
    Company newCompany;
    newCompany.addAccount("Pavel", "Nedved", 11111);
    newCompany.printAccounts();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下我的错误是什么意思吗?提前致谢(我在company.h中有它,请参阅那里的评论)我有错误'struct std::_List_iterator<Account>' has no member named 'printAccount'

In *_*ico 5

你忘记了后面的括号printAccount()。否则,这不是方法调用。另外,您需要使用->运算符,因为它是一个迭代器。

for(list<Account>::iterator i = listOfAccounts.begin();
    i != listOfAccounts.end(); ++i)
{ 
    i->printAccount();  // Note the ()!
    // This is equivalent to (*i).printAccount(); 
} 
Run Code Online (Sandbox Code Playgroud)