Delen via


Compilerfout C2512

'id': er is geen geschikte standaardconstructor beschikbaar

Opmerkingen

Een standaardconstructor, een constructor waarvoor geen argumenten zijn vereist, is niet beschikbaar voor de opgegeven klasse, structuur of samenvoeging. De compiler levert alleen een standaardconstructor als er geen door de gebruiker gedefinieerde constructors worden geleverd.

Als u een constructor opgeeft die een niet-ongeldige parameter gebruikt en u wilt toestaan dat uw klasse zonder parameters wordt gemaakt (bijvoorbeeld als de elementen van een matrix), moet u ook een standaardconstructor opgeven. De standaardconstructor kan een constructor zijn met standaardwaarden voor alle parameters.

Example

Een veelvoorkomende oorzaak van fout C2512 is wanneer u een klasse- of struct-constructor definieert met argumenten en u vervolgens probeert een exemplaar van uw klasse of struct zonder argumenten te declareren. Hieronder wordt bijvoorbeeld struct B een constructor declareren waarvoor een char * argument is vereist, maar niet een constructor die geen argumenten gebruikt. In mainwordt een exemplaar van B gedeclareerd, maar er wordt geen argument opgegeven. De compiler genereert C2512 omdat er geen standaardconstructor voor B kan worden gevonden.

// C2512.cpp
// Compile with: cl /W4 c2512.cpp
// C2512 expected
struct B {
   B (char *) {}
   // Uncomment the following line to fix.
   // B() {}
};

int main() {
   B b;   // C2512 - This requires a default constructor
}

U kunt dit probleem oplossen door een standaardconstructor te definiƫren voor uw struct of klasse, zoals B() {}, of een constructor waarbij alle argumenten standaardwaarden hebben, zoals B (char * = nullptr) {}.