本文介绍了没有默认ctor的C ++私有变量-无法编译?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个没有默认构造函数的obj1类,也没有一个默认构造函数的obj2类,并且具有obj1元素作为私有变量:

I have a class obj1 that has no default constructor, and class obj2 that also doesn't have a default constructor, and has as private variable an element of obj1:

我想要类似以下代码的内容-但实际上这不能编译,告诉我obj1没有默认构造函数。

I would like something like the following code - but actually this doesn't compile, telling me that obj1 has no default constructor.

class obj1{
    obj1(some parameters){};
}

class obj2{
    obj1 _myObj1;
    obj2(some parameters){
        _myObj1 = obj1(some parameters)
    }
} 

有什么想法吗?

推荐答案

构造 obj1 公开并使用 obj2 中的初始化列表。

Make the constructor of obj1 public and use initialization list in obj2.

class obj1{
public:
    obj1(some parameters){};
};

class obj2{
    obj1 _myObj1;
    obj2(some parameters) : _myObj1(some parameters) {
    }
};

这篇关于没有默认ctor的C ++私有变量-无法编译?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-25 07:16