我是Qt Creator的新手,我正在尝试定义数据库,将矢量作为参数。我已经有了数据库的代码,这是我正在做的实例化对象。
public:
vector<CEmployee*> records;
CDatabase all_emps(records);
我不断收到“记录不是类型”的错误,但我不太明白为什么因为我将记录定义为正上方的向量。我已经尝试将记录更改为简单的向量,但在我的代码中的其他地方会产生其他错误。如果有人能指出我如何解决这个问题,我将不胜感激。提前谢谢!
答案 0 :(得分:0)
确保您在某个地方#include <vector>
和using std::vector
,或者只使用std::
前缀。
您不能在类定义中使用语法CDatabase all_emps(records);
。它被视为成员函数声明,您将参数类型指定为records
(参数名称不是必需的,返回类型为CDatabase
)。 records
不是一种类型。
您有两种选择:
Database all_emps{records};
使用构造函数和member initializer list:
MyClass
{
vector<CEmployee*> records;
CDatabase all_emps;
public:
MyClass(/* possibly vector<CEmployee*> const& records*/) :
records(/* possibly records*/),
all_emps(records)
{
}
...
};
答案 1 :(得分:0)
嗯,records
不是类型,它是成员变量的名称。你可能意味着这个:
public:
// member variable declaration
std::vector<CEmployee*> records;
// method declaration, taking a vector of CEmployee* as an argument
CDatabase all_emps(std::vector<CEmployee*> records);
我不知道为什么records
是公开可见的成员,因为它似乎是一个实现细节,以及为什么all_emps
会返回CDatabase
。
也许这会更有意义:
private:
/// A database used to manage the data.
CDatabase m_db;
public:
/// Returns all employee records from the database.
std::vector<CEmployee*> all_employees();