Qt Creator错误 - “不命名类型”

时间:2016-04-22 19:24:41

标签: c++ qt

我是Qt Creator的新手,我正在尝试定义数据库,将矢量作为参数。我已经有了数据库的代码,这是我正在做的实例化对象。

public:
    vector<CEmployee*> records;
    CDatabase all_emps(records); 

我不断收到“记录不是类型”的错误,但我不太明白为什么因为我将记录定义为正上方的向量。我已经尝试将记录更改为简单的向量,但在我的代码中的其他地方会产生其他错误。如果有人能指出我如何解决这个问题,我将不胜感激。提前谢谢!

2 个答案:

答案 0 :(得分:0)

  1. 确保您在某个地方#include <vector>using std::vector,或者只使用std::前缀。

  2. 您不能在类定义中使用语法CDatabase all_emps(records);。它被视为成员函数声明,您将参数类型指定为records(参数名称不是必需的,返回类型为CDatabase)。 records不是一种类型。

  3. 您有两种选择:

    1. 使用list initialization

      Database all_emps{records};
      
    2. 使用构造函数和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();