无法弄清楚这种非静态成员参考错误

时间:2016-11-28 04:44:16

标签: c++ compiler-errors

我是C ++的新手并试图解决这个问题。编译时,我收到错误'。编写代码的正确方法是什么?这就是a nonstatic member reference must be relative to a specific object给我错误的地方。

numShapes

然后我在另一个标题中将其作为我的虚拟基类,如果这是正确的术语。

class Application
private:
     int numShapes;
public:
     Shapes * shapes[numShapes];

2 个答案:

答案 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) {}