我正在尝试在 C++ 中实现策略模式,但出现以下错误:
错误 1 错误 C2259:“LinearRootSolver”:无法实例化抽象类
这是我的代码(错误所在的行标有注释)。使用策略模式(上下文)的类:
bool Isosurface::intersect(HitInfo& result, const Ray& ray, float tMin, float tMax) {
INumericalRootSolver *rootSolver = new LinearRootSolver(); // error here
[...]
}
这是我的策略模式类:
class INumericalRootSolver {
public:
virtual void findRoot(Vector3* P, float a, float b, Ray& ray) = 0;
};
class LinearRootSolver : public INumericalRootSolver {
public:
void findRoot(Vector3& P, float a, float b, Ray& ray) {
[...]
}
};
我不明白为什么尝试在顶部的 intersect 方法中实例化抽象类时出错?