C++:“Field'object_var'必须初始化”在基类

C++:“Field'object_var'必须初始化”在基类

问题描述:

的构造函数中我正在编程一个C++中的多态程序,它需要使用派生/继承类。我的基类叫做ClassA,我的派生类叫做ClassB。我有一个名为varClass的单独的类,它是我的基类的构造函数中的参数的数据类型,ClassA。我在ClassA.cpp获得下面的构造此错误消息:C++:“Field'object_var'必须初始化”在基类

字段“object_var”必须初始化

#include "ClassA.h" 
#include "varClass.h" 

ClassA::ClassA(const classVar &O, const int &p) {} 

为什么必须从一个单独的具体类的对象,让他们之前被初始化使用一个函数的参数在不同的类中?我曾尝试在ClassAclassVar课中提前申报,但没有运气。我怎样才能解决这个问题,以允许从一个单独的类的数据类型的参数?如果我给它一个初始化,我怎样才能确保传递给这个构造函数的每个值都是唯一的,而不是被初始化值重写呢?

下面是其余的相关代码。我不打算展示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类无关的问题。该课程是一个标准的具体课程。

你应该在constructor's initializer list初始化reference

ClassA(const classVar &O, const int &p) 
: object_var(O) {  
} 

附:确保头文件和源文件中的构造函数签名匹配。

+0

谢谢!很有帮助。 – jshapy8

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

+0

你能举一个正确的方法来做这个例子吗?如何初始化它以确保传递给它的值是唯一的,而不仅仅是初始化值相同? – jshapy8

+0

@ revolution9540类似于'ClassA :: ClassA(const classVar&O,const int&p):object_var(O){} – 1201ProgramAlarm

+0

谢谢!我没有想到这样做。 – jshapy8