如何调用嵌套类的构造函数
How to call constructor of a nested class
首先,我不是在谈论像(1,2)这样的问题。我是在谈论一个已经有构造函数并且只按值嵌套的类,而不是按定义嵌套的类……如果有意义的话。
目前,我有这个方法,它工作,但使用new
和丑陋的IMO:
class A {
private:
int value;
public:
A(int _value);
};
class B {
private:
A *a;
public:
B(int _value);
};
B的构造函数:
B::B(int _value)
{
a = new A(_value);
}
如果我要将A *a;
更改为A a
,我如何创建B
以使A
的构造函数以相同的方式调用?
我试过:
B::B(int _value)
{
a = A(_value); // no matching function for call to ‘A::A()’
a = A::A(_value); // cannot call constructor ‘A::A’ directly
a(_value); // no match for call to ‘(A) (int&)’
a.A(_value); // invalid use of `A::A`
}
如果没有:
- 使用
new
指针 - 使用一些显式的
void A::init(_value)
(需要为A
添加一个不带参数的构造函数) - 扩展类A(将需要将特定的私有成员更改为受保护的,并以不希望的方式网格化它们的"名称空间")
-
memcpy()
(A temp(_value); memcpy(&a, &temp, sizeof (A));
)的可疑使用
不使用上述方法是否可行?
使用初始化列表
。B构造函数看起来像
class B {
...
A a;
};
B::B(int _value) : a(_value) {
...
}
相关文章:
- 如何在 C++ 的外部类构造函数中初始化嵌套类成员
- 嵌套模板函数采用 2 个具有相同内部类型的容器
- 嵌套模板函数的重载
- 嵌套的模板结构构造函数实现
- 访问另一个类中的模板化嵌套类函数和对象
- C++ 中的嵌套结构函数
- C++ 中嵌套模板函数的常量限定符
- C++ 嵌套构造函数调用问题
- 嵌套构造函数C++
- C++嵌套类函数返回类型和命名空间
- 如何在 Boost.MPL 中使用嵌套元函数
- 嵌套模板函数作为参数
- 为opencl嵌套内核函数
- Visual Studio中嵌套模板函数的typeid不一致
- 通过嵌套构造函数对类成员进行C++初始化
- 嵌套在函数中的函数声明的命名空间
- 如何在 Gecode 中实现"嵌套"成本函数?
- C++(嵌套)函数调用指令-寄存器
- C++嵌套构造函数调用与函数声明
- c++中的嵌套可变函数