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

标签 c++ class inheritance parameters initialization

我正在用 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 和实现与问题无关。该类是标准的具体类。

最佳答案

你应该初始化referenceconstructor's initializer list :

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

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

关于C++: "Field ' object_var'必须在基类的构造函数中初始化",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34279385/

相关文章:

c++ - 创建函数来访问类变量是一种好习惯吗?

inheritance - Grails/GORM:继承的域类的行为不一致(测试VS Bootstrap)

python - py2neo中的节点可以继承吗?

c++ - 如何在 C++ 的 Xcode 4 中从控制台获取输入

c++ - 类枚举的正确位置

c++ - 用于 3D 重建的 OpenCV 未校准相机校正

php - Wordpress oop wpdb 在类里面

Java通过3类进行排序

c++ - 类模板特化中模板参数的默认值

css - 无法覆盖字体大小 :100% & font-inherit property in another CSS file