我有以下代碼:構造函數nulltpr_t:函數定義不聲明參數
class C {
private:
void *data;
public:
constexpr C(nullptr_t) : data(nullptr) { }
C(int i) : data(new int(i)) { }
};
我已經創建了一個構造函數,需要nullptr_t
,這樣我可以有類似於下面的代碼:
C foo(2);
// ...
foo = nullptr;
與此類似的代碼以前在MSVC上工作過,但是此代碼無法在GCC 5.3.1(使用-std=c++14
)上編譯,而在C(nullptr_t)
的右括號與error: function definition does not declare parameters
之間編譯。即使我給參數一個名字(在這種情況下,_
),我得到error: expected ')' before '_'
。如果constexpr
關鍵字被刪除,這也會失敗。
爲什麼我無法聲明這樣的構造函數,以及有什麼可能的解決方法?
您應該'的#include'至少。 (並添加'std ::'。) –
songyuanyao
@songyuanyao謝謝你,修正了它。 –