抽象工厂类中的细微设计错误
subtle design error in abstract factory class
class Animal
{
public:
typedef enum{
CAT,
DOG,
RABBIT,
EAGLE,
FOX
} AnimalType;
static Animal* Create(AnimalType type);
~Animal();
virtual void PlayWith(Animal* other)=0;
virtual void Eat(Animal* other) = 0;
protected:
Animal();
};
我被告知其中一行有编程错误,但我找不到细微的错误。有人能弄明白吗?
您正在设计一个抽象基类,因此您将通过类型为Animal*的基类指针操作指向具体派生类(Cat*, Dog*, Rabbit*)实例的指针。对于这种多态层次结构,基类析构函数必须总是是虚的。
virtual ~Animal();
通常,基类的默认构造函数要么具有公共作用域,要么具有私有作用域(如果您希望它被抑制的话)。我不明白为什么它应该有受保护的作用域。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- 注册对对象工厂的调用会导致段错误
- 为什么从工厂函数分配向量并在循环中迭代它会导致段错误
- 使用工厂方法时编译器错误:无法转换"const std::p air<char* const
- 确定工厂方法返回的对象类(错误:函数不接受 1 个参数
- 工厂设计模式中的纯虚拟功能错误
- 在C++中实现抽象工厂 PIMPL 习语的运行时错误
- 类LNK1120错误(工厂模式)。不知道它来自哪里
- 抽象工厂类中的细微设计错误
- 创建模板和 boost::shared_ptr 基于泛型工厂时的编译错误
- 在工厂中使用指针函数会产生编译时错误
- 模板工厂给出链接器错误并忽略引用类型