class Example {
//...
static auto make = []() -> std::shared_ptr {
return std::make_shared(Params::EchoBufferSize);
};
static auto recycle = [](std::shared_ptr o) {
//nothing for now
};
recycle::shared_pool receivePool(make, recycler);
};
但我得到了
In file included from /home/project/AIPTCPClient.cpp:57:0:
/home/project/AIPTCPClient.h:312:57: error: 'make' is not a type
recycle::shared_pool receivePool(make, recycler);
^~~~
/home/project/AIPTCPClient.h:312:63: error: 'recycler' is not a type
recycle::shared_pool receivePool(make, recycler);
^~~~~~~~
正如您在shared_pool中看到的,它需要兩個函數,這就是我傳遞lambda的原因。但是C++抱怨說它們應該是類型。我還是不明白。為什麼構造函數需要類型而不是對象?
回答開始:得票數 4Default member initializer (由于C++11)僅支持帶括号列表初始值設定項和等号初始值設定項,但不支持圓括号初始值設定項;因此請更改
recycle::shared_pool receivePool(make, recycler);
至
recycle::shared_pool receivePool{make, recycler};
或
recycle::shared_pool receivePool = recycle::shared_pool(make, recycler);
總結
以上是真正的電腦專家為你收集整理的錯誤:“x”不是x是構造函數參數的類型的全部内容,希望文章能夠幫你解決所遇到的問題。
如果覺得真正的電腦專家網站内容還不錯,歡迎将真正的電腦專家推薦給好友。
有話要說...