[英]Initialize a class object inside a class object - C++
如何從另一個類對象中初始化一個類對象。
class Dummy {
public:
Dummy() {}
};
class Server {
public:
string ip;
string port;
Dummy dummy; // <-- declare an object from within another object.
public:
Server(string port__, string ip__, Dummy dummy__) {
port = port__;
ip = ip__;
dummy = dummy__;
}
void some_func() {
// use dummy from here.
dummy.hello_world();
}
}
我想要做的是在整個對象服務器中使用對象 Dummy。
在您的情況下, Dummy
有一個默認構造函數,因此您應該沒有問題按照您的方式進行操作。
您還可以使用 成員初始化列表,如下所示:
Server(string ip__, string port__, Dummy dummy__)
: ip(ip__), port(port__), dummy(dummy__)
{}
即使Dummy
沒有默認構造函數,此方法也將起作用。
之后,您可以在Server
類的任何地方使用dummy
成員。 目前,您沒有在Dummy
類中定義任何公共成員。
完成后,您可以在整個Server
中使用: dummy.<some_public_member_of_Dummy>
。
旁注:
Server
構造函數會更有效,例如: Dummy const & dummy__
。using namespace std
- 請參閱此處為什么“使用命名空間 std;” 被認為是不好的做法? .您可以在Server::Server(std::string, std::string, Dummy)
的構造函數初始化列表中初始化數據成員dummy
,如下所示:
class Server{
//other code here
Server(string port__, string ip__, Dummy dummy__)
//---------------------------vvvvvvvvvvvvvv----------->initialize dummy in constructor initializer list
:port(port__), ip(ip__), dummy(dummy__) {
}
};
請注意,您的Dummy
類沒有名為hello_world
的成員函數,因此您不能在Dummy
對象上調用該函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.