2011-02-24 4 views
-3

dynamic_cast()을 사용할 때 다음과 같은 오류가 발생합니다.dynamic_cast를 사용할 때 오류가 발생합니까?

error: 'dynamic_cast' was not declared in this scope

미리 감사드립니다!

+1

당신이 오류 메시지가 잘못 입력 했는가, 또는 당신이 코드에서 잘못 입력 했습니까? 코드를 보여줄 수 있습니까? –

+4

제 생각에는 설명서 (http://www.cplusplus.com/doc/tutorial/typecasting/ - dynamic_cast section)를 읽어야합니다. 이름이 "dynamic_cast"인 함수가 없습니다 – Igor

+2

질문에 'dynamic_cast'를 사용했던 세 곳 중 두 곳이 틀렸다고 철자했습니다. 철자법은 프로그래밍에서 중요합니다. – meagar

답변

7

구문은, (동적 대 dyanmic) 오타

0

구문은 dynamic_cast<Foo*>(BarObj);, 그래서이 함수로 호출 아니에요있다.

+0

템플릿 함수를 명시 적으로 특수화하는 호출과 같이 보입니다 ... 함수 호출로 구현되거나 컴파일러에서 특별히 처리 할 수 ​​있습니다. – Steve

1

dynamic_cast은 다형 등급에서만 작동합니다. 따라서 작업하는 클래스가 다형성이 아닌 경우 컴파일 오류가 발생합니다.

다형성 클래스는 적어도 하나의 가상 함수를 가지고 있으며 심지어 소멸자입니다.

dynamic_cast를 사용하는 구문이 예이다 :

struct A { virtual ~A(){} }; 
struct B : A { }; 

B b; 
A *pA = &b; //no cast needed here! 
B *pB = dynamic_cast<B*>(pA); // dynamic cast is needed here! 
+0

확실히 맞습니다. 그러나이 경우에는 다른 컴파일 오류가 발생했습니다 –

+0

@Armen : 컴파일 오류는 무엇입니까? 어떤 라인에서? http://www.ideone.com/07Jyg – Nawaz

+0

@Nawaz : nonpolymorphic 타입이 dynamic_cast라는 사실이 문제 였다면, dynamic_cast가 선언되지 않은 식별자라고 오류가 표시되지 않습니다. 오역을해서 죄송합니다 –

관련 문제