다음을 통해 공유


컴파일러 오류 C2512

'identifier': 사용할 수 있는 적절한 기본 생성자가 없습니다.

인수가 필요하지 않은 생성자인 기본 생성자는 지정된 클래스, 구조체 또는 공용 구조체에 사용할 수 없습니다. 컴파일러는 사용자 정의 생성자가 제공되지 않은 경우에만 기본 생성자를 제공합니다.

void가 아닌 매개 변수를 사용하는 생성자를 제공하고 매개 변수 없이 클래스를 만들도록 허용하려는 경우(예: 배열의 요소) 기본 생성자도 제공해야 합니다. 기본 생성자는 모든 매개 변수에 기본값을 사용하는 생성자일 수 있습니다.

예시

C2512 오류의 일반적인 원인은 인수를 사용하는 클래스 또는 구조체 생성자를 정의한 다음 인수 없이 클래스 또는 구조체의 인스턴스를 선언하려고 할 때입니다. 예를 들어 struct B 아래는 인수가 필요 char * 하지만 인수를 사용하지 않는 생성자를 선언합니다. 에서 mainB 인스턴스가 선언되지만 인수는 제공되지 않습니다. 컴파일러는 B에 대한 기본 생성자를 찾을 수 없으므로 C2512를 생성합니다.

// 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
}

구조체 또는 클래스에 대한 기본 생성자(예: B() {}) 또는 모든 인수에 기본값(예: B (char * = nullptr) {}기본값이 있는 생성자)을 정의하여 이 문제를 해결할 수 있습니다.