我试图存储基类(employee
)的对象,或指向另一个类(finance
)对象中向量/数组内对象的指针。员工对象的数量取决于用户,因此需要动态工作。到目前为止,我有这个:
finance.h
#ifndef FINANCE
#define FINANCE
#include "freight.h"
class finance
{
public:
finance();
~finance();
};
#endif // FINANCE
finance.cpp
#include "finance.h"
using namespace std;
finance::finance()
{
vector<employee *> vemployee; //first problem line
}
finance::~finance()
{
}
main.cpp
void add_manager()
{
string name;
name = get_string_input("Please input the name of the employee.");
vManagers.push_back(new manager(name)); //second problem line
ask_employee();
}
Main.cpp
还包含我的所有.h
文件以及finance.cpp
。我在main和finance.cpp
上都遇到了关于预期的主表达式并且没有在范围中声明的错误。
我显然做错了什么,但老实说我不知道因为载体是我还没有被教过的东西。如果有一种方法可以使用数组,我也不介意尝试。
答案 0 :(得分:1)
好的,你需要在课堂声明中保留 vManagers :
//finance.h file
#ifndef FINANCE
#define FINANCE
#include "freight.h" //assuming you have defined manager class here
class finance
{
public:
finance();
~finance();
void add_manager();
private:
vector<manager*> vManagers;
};
#endif // FINANCE
//finance.cpp file
#include "finance.h"
using namespace std;
finance::finance()
{
}
finance::~finance()
{
for(int i=0; i< vManagers.size(); i++)
{
if(vManagers[i] != NULL)
{
delete vManagers[i];
}
}
}
finance::add_manager()
{
string name;
name = get_string_input("Please input the name of the employee.");
vManagers.push_back(new manager(name)); //second problem line
while(ask_employee()
{
name = get_string_input("Please input the name of the employee.");
vManagers.push_back(new manager(name)); //second problem line
}
}
现在您可以在main.cpp中创建和使用财务对象