我试图在类中实例化一个类,以便外部类包含内部类。在一个类中实例化一个类
这是我的代码:
#include <iostream>
#include <string>
class Inner {
private:
std::string message;
public:
Inner(std::string m);
void print() const;
};
Inner::Inner(std::string m) {
message = m;
}
void Inner::print() const {
std::cout << message << std::endl;
std::cout << message << std::endl;
}
class Outer {
private:
std::string message;
Inner in;
public:
Outer(std::string m);
void print() const;
};
Outer::Outer(std::string m) {
message = m;
}
void Outer::print() const {
std::cout << message << std::endl;
}
int main() {
Outer out("Hello world.");
out.print();
return 0;
}
“内在的”,是我在含内内尝试外,然而,当我编译,我得到一个错误,有呼叫没有匹配功能到Inner :: Inner()。 我做错了什么?
谢谢。
谢谢!我设法弄清楚了这一点。 – 2010-05-30 12:03:13
-1。你不需要使用初始化列表来初始化类成员。问题是缺少的默认构造函数。有几种方法可以解决这个问题 - 使用初始化程序列表,在其中传递Inner字段的初始值只是一个。 – iheanyi 2014-07-29 15:42:30
@iheanyi:为了解决上述问题,您需要。否则'Inner'不会有初始化的数据成员。另外,我的类通常不会显示默认构造函数。这是因为对于我的很多类来说,初始化但数据不足的状态是没有意义的。 YMMV,但添加默认构造函数只是为了避免在初始化列表中列出数据成员对我来说似乎是一个非常错误的建议。 – sbi 2014-07-30 04:56:11