허프만 코딩 용 CodeTree를 작성하고 있습니다.노드 유형의 다형성. 가장 좋은 솔루션은 무엇입니까?
class Node
{
protected:
enum TYPE{INTERNAL,LEAF};
public:
virtual TYPE is() = 0;
};
class InternalNode : public Node{
TYPE is(){
return Node::INTERNAL;
}
...other methods
};
class LeafNode: public Node{
TYPE is(){
return Node::LEAF;
}
...other methods
};
그것은 잘 작동하지만 나는 그것이 좋은 디자인인지 모르거나하지, 내가 좋아하는 뭔가를 들었다 : "기본 객체는 하위 유형의 지식이 없습니다.".
Node 클래스의 모든 것을 병합하는 것이 좋으며, 두 클래스로 분리하는 것이 더 낫습니다.
여기에는 다형성에 대한 강력한 사례가 없습니다. 당신은 고전적인 대수 데이터 타입을 가지고 있습니다. 하나의 클래스를 사용하십시오. 내부에는 태그가있는 공용체가있을 수 있습니다. –