기본 클래스의 객체 벡터가 있지만이 클래스를 사용하여 여러 파생 클래스가 포함되어 있다고 가정합니다. 그 벡터의 멤버가 특정 클래스인지 아닌지 확인하고 싶습니다. 어떻게해야합니까? 나는 기본 클래스의 매개 변수를 취하는 파생 클래스의 템플릿을 만드는 방법을 생각할 수 있지만 클래스를 개체와 어떻게 비교할 수 있는지 잘 모르겠습니다.C++에서 객체의 클래스를 확인하려면 어떻게해야합니까?
1
A
답변
0
당신은 dynamic_cast
을 사용할 수 있습니다하지만 당신은 그렇게 할 필요가 있다면, 당신은 아마도 디자인 문제가 있습니다. 이 문제를 해결하려면 다형성이나 템플릿을 사용해야합니다.
2
0
체크 : 여기
#include <iostream>
using namespace std;
#include <typeinfo>
class A
{
public:
virtual ~A()
{
}
};
class B : public A
{
public:
virtual ~B()
{
}
};
void main()
{
A *a = new A();
B *b = new B();
if (typeid(a) == typeid(b))
{
cout << "a type equals to b type\n";
}
else
{
cout << "a type is not equals to b type\n";
}
if (dynamic_cast<A *>(b) != NULL)
{
cout << "b is instance of A\n";
}
else
{
cout << "b is not instance of A\n";
}
if (dynamic_cast<B *>(a) != NULL)
{
cout << "a is instance of B\n";
}
else
{
cout << "a is not instance of B\n";
}
a = new B();
if (typeid(a) == typeid(b))
{
cout << "a type equals to b type\n";
}
else
{
cout << "a type is not equals to b type\n";
}
if (dynamic_cast<B *>(a) != NULL)
{
cout << "a is instance of B\n";
}
else
{
cout << "a is not instance of B\n";
}
}
관련 문제
- 1. C에서 Ruby 객체의 클래스를 얻으려면 어떻게해야합니까?
- 2. C에서 루프를 초기화하기 전에 스트림을 확인하려면 어떻게해야합니까?
- 3. C에서 메타 클래스를 구현하려면 어떻게해야합니까?
- 4. 메소드가 이미 호출되었는지 확인하려면 어떻게해야합니까?
- 5. 어떻게 클래스를 확인하려면 클래스 인스턴스
- 6. 변수가 초기화되었는지 확인하려면 어떻게해야합니까?
- 7. OptionButton.Value가 선택되었는지 확인하려면 어떻게해야합니까?
- 8. 클래스를 객체의 요소로 사용
- 9. Android 체크 박스에서 일정을 확인하려면 어떻게해야합니까?
- 10. 코드에서 객체의 유형을 얻으려면 어떻게해야합니까?
- 11. DOM 노드가 생성자로부터 상속되는지 여부를 확인하려면 어떻게해야합니까?
- 12. 파일이 jquery로 수정되었는지 확인하려면 어떻게해야합니까?
- 13. 내 HttpContext.Cache의 내용을 확인하려면 어떻게해야합니까?
- 14. PHP에 값이 존재하는지 확인하려면 어떻게해야합니까?
- 15. 목록의 항목이 순차적인지 확인하려면 어떻게해야합니까?
- 16. TDBCheckBox가 런타임에 설정되었는지 확인하려면 어떻게해야합니까?
- 17. 하스켈에서 데이터 유형을 확인하려면 어떻게해야합니까?
- 18. Access에서 null 값을 확인하려면 어떻게해야합니까?
- 19. GEARS가 설치되어 있는지 확인하려면 어떻게해야합니까?
- 20. 어떤 CALayer를 클릭했는지 확인하려면 어떻게해야합니까?
- 21. 연결에서 SSL을 사용하는지 확인하려면 어떻게해야합니까?
- 22. 웹 사이트의 위치를 확인하려면 어떻게해야합니까?
- 23. 테이블 mysql.proc가 있는지 확인하려면 어떻게해야합니까
- 24. Javascript를 사용하여 favicon을 확인하려면 어떻게해야합니까?
- 25. urlRequest가 as3으로 성공했는지 확인하려면 어떻게해야합니까?
- 26. C에서 클래스를 클래스로 변환하는 방법
- 27. 자바 - 객체의 클래스를 알려주는 방법?
- 28. HIbernate HQL에서 객체의 클래스를 선택하는 방법은 무엇입니까?
- 29. 객관적인 C에서 재사용 가능한 웹 인터페이스 클래스를 만들려면 어떻게해야합니까?
- 30. Objective-C에서 내 viewcontroller에서 데이터베이스 클래스를 호출하려면 어떻게해야합니까?
시작하는 가능한 장소 : http://stackoverflow.com/questions/351845/finding-the-type-of-an-object-in-c – MikeB
기본 클래스의 객체 벡터가있는 경우 파생 유형의 객체가 없습니다. 그들은 벡터에 저장 될 때 얇게 썬 것입니다. –
진짜 질문은 왜 유형을 알아야하는지입니다. 종종 디자인상의 결함입니다. –