Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
'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) {}.