gpt4 book ai didi

c++ - 在对象中构造对象

转载 作者:太空狗 更新时间:2023-10-29 19:56:05 25 4
gpt4 key购买 nike

我在一个类中声明了一个对象A,我想在初始化对象B的同时初始化对象A:

class A{
private:
int num1;
string word;
public:
A(int,word);
};

A::A(int _num1, string _word){
num1 = num1;
word = _word;
}

class B{
private:
char letter;
A a;
public:
B(char,int,string)
};

B::B(char _letter, int _num1, string _word){
letter = _letter;
a(_num1, _word);
}

这给出了错误:只能调用一个函数。我的问题是,如何在另一个对象中包含一个对象,该对象可以由外部对象构造函数初始化。

最佳答案

你应该初始化数据成员amember initializer list ,

B::B(char _letter, int _num1, string _word) : a(_num1, _word) {
letter = _letter;
}

或更好

B::B(char _letter, int _num1, string _word) : letter(_letter), a(_num1, _word) {}

请注意,当进入 B 的构造函数体时, a必须已经初始化。不使用上面的成员初始值设定项列表,a将尝试使用默认构造函数进行初始化,但是 A没有一个。和 a(_num1, _word);只是想调用a好像它是一个仿函数,但是 a不是。

关于c++ - 在对象中构造对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55803833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com