C++ C++;银行项目,结构向量。

C++ C++;银行项目,结构向量。,c++,vector,struct,C++,Vector,Struct,我正在做一个创建银行账户数据库的项目。所以我必须使用结构向量。因此,在我的头文件中有makeAccount()方法的结构和函数原型 struct帐户{ 国际帐户号码; 字符串lastName; 字符串名; 双重账户余额; }; //功能原型 模板 无效生成帐户(向量和); //MakeCount方法 无效生成帐户(矢量和v) { T newacc; newAccountNumber=rand()%9000+1000; cout我假设makeAccount应该添加到引用向量,而您不知道如何添加。如

我正在做一个创建银行账户数据库的项目。所以我必须使用结构向量。因此,在我的头文件中有makeAccount()方法的结构和函数原型

struct帐户{
国际帐户号码;
字符串lastName;
字符串名;
双重账户余额;
};
//功能原型
模板
无效生成帐户(向量和);
//MakeCount方法
无效生成帐户(矢量和v)
{
T newacc;
newAccountNumber=rand()%9000+1000;

cout我假设makeAccount应该添加到引用向量,而您不知道如何添加。如果是这样,答案很简单,只需在函数末尾使用
v.push_back(newacc);
(顺便说一句,它不是一个方法,方法在某个类中)

v是一个引用,这意味着makeAccount中发生在v上的一切都会发生在您给makeAccount的变量上,正如您所希望的那样。push_back是vector添加条目的常用方法

顺便说一句,MakeCount不知道T是什么,你必须把
template
放在前面

大体上,它看起来是这样的

int main(){

    vector<Account> accounts;

    while(some_condition){

        makeAccount(accounts);
        do_something_that_changes_condition;

    }
    return 0;
}
intmain(){
媒介账户;
while(某些情况){
账户;
做一些改变情况的事情;
}
返回0;
}
至于你在评论中提到的错误,请告诉我们你的主要观点


也就是说,你的问题有点难以理解,如果这不是你想知道的,我会编辑它。

如果你要访问特定的成员变量,为什么要使用模板?我认为这也很奇怪,但说明中明确指出模板是必要的。如果你要这样做,你需要一个模板其他
template
子句:
template void makeAccount(vector&v){…}
不清楚您在这里要问什么。您的代码是一个很好的开始-做得很好。因此本质上-在我的主要声明中,我声明了一个名为bankAccounts的account类型的向量。然后我尝试调用方法makeAccount(bankAccounts),它抛出一个错误,表示对makeAccount的引用未定义,我很难理解我到底传递给函数的是什么。我想我传递了一个向量bankAccounts的引用,但后来我陷入了如何处理该向量的困境。我如何操作将另一个struct元素添加到我的向量并修改其成员变量?是的这就是我要问的,但假设我想添加另一个具有不同名称、accnum等的银行帐户……如果我再次调用此函数,那么在这种情况下,它只会附加到“v”的末尾。@zrendy是的,它会的。push_back就是这样做的。因为v始终位于帐户所在的地址-这就是引用的概念-ev每件事都没问题。那么我该如何访问这个向量的索引5处的元素并打印出我需要的信息呢?@zrendy std::cout@zrendy另一件事,用这种方式编码有点不正常。我不明白为什么要使用引用,而不是让makeAccount返回一个帐户,比如
Account makeAccount();
然后通过
账户调用它。push_back(makeAccount());
或者将它作为一种账户方法,比如
结构账户{…账户()};账户::账户(){账户编号=兰德()%9000+1000;…}
然后通过
账户调用它。push_back(账户);
或者,如果这不是标准构造函数,则使用类似于
结构帐户{…静态帐户read_Account()};
int main(){

    vector<Account> accounts;

    while(some_condition){

        makeAccount(accounts);
        do_something_that_changes_condition;

    }
    return 0;
}