[英]How to implement this pattern in C++?
我有一個UDPSocketTest
類,它是從SocketTest
派生的。 SocketTest
在其構造函數中需要一個參數。
因為使用了gtest
框架,所以UDPSocketTest
需要一個沒有參數的構造函數,因此我想在UDPSocketTest
構造函數中創建它,並將其傳遞給SocketTest
。
問題是基類在成員之前按C ++標准進行了初始化。
class UDPSocketTest : public SocketTest
{
public:
UDPSocketTest()
socketPool_(new SocketPool()), <<---- Line 1
SocketTest(socketPool_) { <<---- Line 2
}
~UDPSocketTest() {
}
private:
SocketPool* socketPool_;
};
但是第2行應該在第1行之前調用。那么有什么方法可以實現呢?
使用委托的構造函數(C ++ 11):
class UDPSocketTest : public SocketTest
{
public:
UDPSocketTest() : UDPSocketTest(new SocketPool()) {}
// You should already have this constructor written:
UDPSocketTest(SockerPool *p)
SocketTest(p),
socketPool_(p)
{
}
~UDPSocketTest() {
}
private:
SocketPool* socketPool_;
};
那是阻力最小的路徑。 在C ++ 11之前,您必須將socketPool_移入從第一個繼承的基類,因此它將是初始化順序中的第一個基類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.