我是C ++的新手并试图解决这个问题。编译时,我收到错误'
。编写代码的正确方法是什么?这就是a nonstatic member reference must be relative to a specific object
给我错误的地方。
numShapes
然后我在另一个标题中将其作为我的虚拟基类,如果这是正确的术语。
class Application
private:
int numShapes;
public:
Shapes * shapes[numShapes];
答案 0 :(得分:1)
代码Shapes * shapes[numShapes];
正在请求编译器保留numShapes空间量。问题是它在编译时没有已知值。因此要么使numshapes
成为常量,要么调查动态内存分配。
答案 1 :(得分:0)
而不是
Shapes * shapes[numShapes];
我建议使用:
std::vector<Shapes*> shapes;
完全删除numShapes
,因为您可以从shapes
获得大小。
在构造函数中初始化shapes
。以下内容应该有效。
Application::Application(std::size_t numShapes) : shapes(numShapes, nullptr) {}