我正在用C ++编写一个多态程序,需要使用Derived / Inherited类。我的基类名为ClassA
,我的Derived类名为ClassB
。我有一个名为varClass
的单独类,它是我的Base类ClassA
的构造函数中参数的数据类型。我在ClassA.cpp
中的以下构造函数中收到此错误消息:
Field' object_var'必须初始化
#include "ClassA.h"
#include "varClass.h"
ClassA::ClassA(const classVar &O, const int &p) {}
为什么必须初始化来自单独的具体类的对象,然后才允许它们在单独的类中使用函数的参数?我已经尝试在classVar
中放置ClassA
类的前向声明而没有运气。如何解决此问题以允许来自单独类的数据类型的参数?如果我给它一个初始化,我怎样才能确保传递给这个构造函数的每个值都是唯一的,而不仅仅被初始化值覆盖?
以下是相关代码的其余部分。我不会展示Derived类,因为我不相信它们是问题的一部分,但是我决定提及它们,因为我是一名新手程序员,这可能是问题所在。
// 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
类的标题和实现与问题无关。那个班级是一个标准的具体课程。
答案 0 :(得分:2)
您应该在reference:
中初始化constructor's initializer listClassA(const classVar &O, const int &p)
: object_var(O) {
}
P.S。确保头文件和源文件中的构造函数签名匹配。
答案 1 :(得分:0)
object_var
需要在构造函数中初始化,因为它是一个引用。没有其他方法可以引用它。