如何解决在另一个C ++类中使用参数化构造函数声明对象
A类包含在B类内部,如下面的简单示例所示。
问题在于类A仅具有参数化的构造函数。
还有另一种方法可以在类B中声明A类对象,而不必使用指向类A的指针吗?
class A
{
public:
A(int var1,int var2);
private:
//...
};
class B
{
public:
B();
private:
A a; // Compiler error
A* a_ptr; // This will of course work fine. We can create a new A object with parameters any time using the a_ptr
};
解决方法
A a; //编译器错误
除非 B 的构造函数以必需的参数(例如B() : a(an_int,an_int) {...}
)显式调用 A 的构造函数,否则将请求没有参数或所有参数的构造函数参数具有默认值,但您没有该构造函数,只有一个构造函数需要2个 int
还有另一种方法可以在类B中声明A类对象,而不必使用指向类A的指针吗?
您没有声明,而是 define /每次实例化 B A 的新实例。 / em>
请注意,您以后可以创建A的实例,而不必像使用 a_ptr 那样使用指针
std::vector<A> a;
,当您知道 A 的实例时,您需要做的事
a.push_back(A(an-int,an-int));
但是您只希望一个实例的事实在 a 的定义中不可见(出于欢迎的评论)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。