微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在另一个C ++类中使用参数化构造函数声明对象

如何解决在另一个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 举报,一经查实,本站将立刻删除。