기본 생성자 또는 할당 연산자가없는 클래스가 있으므로 다른 함수의 결과에 따라 if/else 문에서 선언되고 초기화됩니다. 그러나 두 조건의 경로가 인스턴스를 만들지 만 나중에 범위를 벗어난다고합니다.if 문의 변수 범위
은 (단지 점을 설명하기 위해 int
으로 수행) 다음과 같은 예를 생각해
#include <iostream>
int main()
{
if(1) {
int i = 5;
} else {
int i = 0;
}
std::cout << i << std::endl;
return 0;
}
변수는 조건의 끝에서 범위를 벗어난 조건 이동에 선언합니까? 기본 생성자가없는 상황을 처리하는 올바른 방법은 무엇입니까? 그러나 생성자에 대한 인수는 특정 조건에 따라 다릅니다.
주어진 답변에 비추어 편집
는 상황이 그래서 아마 접근 방식을 변경해야 더 복잡하다. A에서 파생 된 추상 기본 클래스 A와 두 클래스 B 및 C가 있습니다. 어떻게 이런 식으로 표현합니까?
if(condition) {
B obj(args);
} else {
C obj(args);
}
변경 방법은 무엇입니까? A가 추상이므로 A* obj
을 선언하고 new
으로 적절한 유형을 만들 수는 없습니다.
가상 또는 정적 상속 있습니까? – Dani
가상입니다. 'class A'는 가상 함수를 가지고 있습니다. C++은 강한 편이 아니며 Fortran에서 주로 작동합니다. – tpg2114
실제로 추상 클래스에 대한 포인터를 선언 할 수 있습니다. 저는 제 대답을 편집했습니다. –