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) {}
为什么必须从一个单独的具体类的对象,让他们之前被初始化使用一个函数的参数在不同的类中?我曾尝试在ClassA
的classVar
课中提前申报,但没有运气。我怎样才能解决这个问题,以允许从一个单独的类的数据类型的参数?如果我给它一个初始化,我怎样才能确保传递给这个构造函数的每个值都是唯一的,而不是被初始化值重写呢?
下面是其余的相关代码。我不打算展示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) {
}
附:确保头文件和源文件中的构造函数签名匹配。
object_var
需要在构造函数中初始化,因为它是一个引用。没有其他的方法可以引用某些东西。
你能举一个正确的方法来做这个例子吗?如何初始化它以确保传递给它的值是唯一的,而不仅仅是初始化值相同? – jshapy8
@ revolution9540类似于'ClassA :: ClassA(const classVar&O,const int&p):object_var(O){} – 1201ProgramAlarm
谢谢!我没有想到这样做。 – jshapy8
谢谢!很有帮助。 – jshapy8