C ++:" Field' object_var'必须初始化"在Base类的构造函数中

时间:2015-12-15 01:06:11

标签: c++ class inheritance parameters initialization

我正在用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类的标题和实现与问题无关。那个班级是一个标准的具体课程。

2 个答案:

答案 0 :(得分:2)

您应该在reference

中初始化constructor's initializer list
ClassA(const classVar &O, const int &p)
 : object_var(O) {    
}

P.S。确保头文件和源文件中的构造函数签名匹配。

答案 1 :(得分:0)

object_var需要在构造函数中初始化,因为它是一个引用。没有其他方法可以引用它。