我正在用 C++ 编写多态程序,需要使用派生类/继承类。我的基类称为 ClassA
,派生类称为 ClassB
。我有一个名为 varClass
的单独类,它是我的基类 ClassA
的构造函数中参数的数据类型。我在 ClassA.cpp
的以下构造函数中收到此错误消息:
Field 'object_var' must be initialized
#include "ClassA.h"
#include "varClass.h"
ClassA::ClassA(const classVar &O, const int &p) {}
为什么来自单独具体类的对象必须先初始化,然后才能将它们用作单独类中函数的参数?我曾尝试在 ClassA
中对 classVar
类进行前向声明,但没有成功。我该如何解决这个问题以允许来自单独类的数据类型的参数?如果我给它一个初始化,我如何确保传递给这个构造函数的每个值都是唯一的,而不只是被初始化值覆盖?
这是相关代码的其余部分。我不打算展示派生类,因为我不认为它们是问题的一部分,但决定提及它们,因为我是一名新手程序员,这可能是问题所在。
// ClassA.h
#ifndef CLASSA_H
#define CLASSA_H
#include "varClass.h"
class ClassA {
protected:
const classVar &object_var; // The problem lies here
unsigned var1;
// ... more code follows
public:
ClassA(const object &O, const int &p);
// ... more code follows
};
#endif
objectVar
类的 header 和实现与问题无关。该类是标准的具体类。
最佳答案
你应该初始化reference在constructor's initializer list :
ClassA(const classVar &O, const int &p)
: object_var(O) {
}
附言确保头文件和源文件中构造函数的签名匹配。
关于C++: "Field ' object_var'必须在基类的构造函数中初始化",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34279385/