Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
"identifier" : brak odpowiedniego konstruktora domyślnego dostępnego
Uwagi
Konstruktor domyślny, konstruktor, który nie wymaga żadnych argumentów, nie jest dostępny dla określonej klasy, struktury lub unii. Kompilator dostarcza konstruktor domyślny tylko wtedy, gdy nie podano konstruktorów zdefiniowanych przez użytkownika.
Jeśli podasz konstruktor, który przyjmuje parametr niepusty i chcesz zezwolić na utworzenie klasy bez parametrów (na przykład jako elementy tablicy), należy również podać konstruktor domyślny. Domyślnym konstruktorem może być konstruktor z wartościami domyślnymi dla wszystkich parametrów.
Przykład
Typową przyczyną błędu C2512 jest definiowanie konstruktora klasy lub struktury, który przyjmuje argumenty, a następnie próbujesz zadeklarować wystąpienie klasy lub struktury bez żadnych argumentów. Na przykład struct B poniżej deklaruje konstruktor, który wymaga argumentu char * , ale nie taki, który nie przyjmuje żadnych argumentów. W mainsystemie zadeklarowane jest wystąpienie B, ale nie podano żadnego argumentu. Kompilator generuje C2512, ponieważ nie może znaleźć domyślnego konstruktora dla B.
// 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
}
Ten problem można rozwiązać, definiując domyślny konstruktor dla struktury lub klasy, na przykład B() {}, lub konstruktora, w którym wszystkie argumenty mają wartości domyślne, takie jak B (char * = nullptr) {}.