그래서 내가 쓴 :목록의 개체 유형을 확인하는 방법은 무엇입니까?
void **list; //list of references
list = new void * [2];
Foo foo = Foo();
const char *not_table [] = {"tf", "ft", 0 };
list[0] = &foo;
list[1] = not_table;
if (dynamic_cast<LogicProcessor*>(list[0])) { //ERROR here ;(
printf("Foo was found\n");
}
if (dynamic_cast<char*> (list[0])) { //ERROR here ;(
printf("char was found\n");
}
하지만 난 얻을 :
error: cannot dynamic_cast '* list' (of type 'void*') to type 'class Foo*' (source is not a pointer to class)
error: cannot dynamic_cast '* list' (of type 'void*') to type 'char*' (target is not pointer or reference to class)
는 왜입니까? 내가 여기서 뭘 잘못하고 있니? 여기에 dynamic_cast를 사용해야합니까? 사전에
감사
편집 : 나는 위의 코드를 알고
많은 일반 C처럼 확실하게보기의 C++ 관점에서 짜증하지만 단지 나는 내가 정말 전에 뭔가를 다음과 같은 상황려고 한 것입니다 구현 :
길이가 두 개인 배열이 두 개 있지만 두 인덱스가 같은 인덱스에 개체를 가질 수 없습니다. 따라서, 또는 array1 [i]! = NULL 또는 array2 [i]! = NULL이 있습니다. 이것은 분명히 메모리 낭비이므로 길이 n의 단일 배열에 두 가지 종류의 객체를 모두 가질 수 있다면 모든 것이 해결 될 것이라고 생각했습니다.
Cocoa (Objective-C) NSArray와 같이 객체의 유형을 신경 쓰지 않아도됩니다. 객체의 유형을 알지 못하더라도 다른 메소드를 사용할 수 있으므로 문제가되지 않습니다. 나중에 확실하게 수업을 듣기. C++ (제 3 자 C++ 라이브러리가 아닌 것이 좋음)가 있습니까?
미리 감사드립니다;)
같은 것을 제안 C와 같은 확인하려면? C++은 동적으로 유형이 지정된 언어입니다. 동적으로 형식이 지정된 객체를 사용하여 어떤 기능을 개발하려고합니까? 우리가 이것을 안다면 더 유용한 대답을 제공 할 수 있습니다. –