Qt 创建器错误 - "Does not name a type"

Qt Creator error - "Does not name a type"

本文关键字:not name type Does Qt 错误 创建      更新时间:2023-10-16

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

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

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

好吧,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();
  1. 确保某处有#include <vector>using std::vector,或者干脆使用std::前缀。

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

您有两种选择:

  1. 使用列表初始化:

    Database all_emps{records};
    
  2. 使用构造函数和成员初始值设定项列表:

    MyClass
    {
        vector<CEmployee*> records;
        CDatabase all_emps;
    public:
        MyClass(/* possibly vector<CEmployee*> const& records*/) :
        records(/* possibly records*/),
        all_emps(records)
        {
        }
        ...
    };