Ich habe den folgenden Code:Constructor, die nulltpr_t nimmt: Funktionsdefinition keine Parameter deklarieren
class C {
private:
void *data;
public:
constexpr C(nullptr_t) : data(nullptr) { }
C(int i) : data(new int(i)) { }
};
ich einen Konstruktor erstellt haben, die nullptr_t
nimmt, so dass ich Code wie folgt haben:
C foo(2);
// ...
foo = nullptr;
-Code ähnlich wie dies funktioniert hat zuvor auf MSVC jedoch dieser Code nicht auf GCC 5.3.1 (mit -std=c++14
) mit auf der schließenden Klammer des C(nullptr_t)
mit error: function definition does not declare parameters
kompilieren. Auch wenn ich dem Parameter einen Namen gebe (in diesem Fall _
), bekomme ich error: expected ')' before '_'
. Dies schlägt auch fehl, wenn das Schlüsselwort constexpr
entfernt wird.
Warum kann ich einen solchen Konstruktor nicht deklarieren, und was sind mögliche Problemumgehungen?
Sie sollten '# include 'mindestens. (Und fügen Sie 'std ::'.) –
songyuanyao
@songyuanyao danke, das hat es behoben. –