"모양"을 저장하기 위해 ptr_vector를 사용하고 있습니다. "원"과 같은 파생 된 모양 클래스로 채우기 위해 노력하고 있습니다. 그리고 그 (것)들을 내리려고 할 때마다 나는 나쁜 캐스트를 얻습니다.BOOST 및 C++ : 다형성이 작동하지 않는 것 같습니다.
class Shape
{
public:
virtual ~Shape() {};
virtual void print() { std::cout << "shape" << std::endl; };
};
class Circle :
public Shape
{
public:
void print() { std::cout << "circle" << std::endl; };
};
int main()
{
boost::ptr_vector<Shape> shapes;
shapes.push_back(new Circle);
BOOST_FOREACH(Shape shape, shapes)
{
Circle& tempCircle = dynamic_cast<Circle&>(shape);
if(&tempCircle != NULL)
tempCircle.print();
}
system("PAUSE");
}
이 또한 참고 인쇄'이후() '가상 함수이기 때문에,이 경우에는'dynamic_cast'는 불필요합니다. – Chad
@Chad : 오, 맞아. 나는 그 부분을 놓쳤다. 감사합니다. –
@Chad : shape.print()를 호출하려고하면 (자동 const & shape : 모양)을 사용할 때 객체에 멤버와 호환되지 않는 유형 한정자가 있다고합니다. function :( – dubesinhower