當前位置:首頁 > 綜合 > 正文

錯誤:“x”不是x是構造函數參數的類型

提問開始:
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++抱怨說它們應該是類型。我還是不明白。為什麼構造函數需要類型而不是對象?

回答開始:得票數 4

Default 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是構造函數參數的類型的全部内容,希望文章能夠幫你解決所遇到的問題。

如果覺得真正的電腦專家網站内容還不錯,歡迎将真正的電腦專家推薦給好友。

你可能想看:

有話要說...

取消
掃碼支持 支付碼