使用全局变量给出错误

时间:2013-09-26 00:21:16

标签: c++ struct

在这里,我正在尝试使用key[2*d]ptr[2*d+1]创建一个结构,但编译器在这些代码行中只是说错误:

  

“错误:数据成员可能没有可变的修改类型。”

我只想在我的代码中使用'd'。现在如何解决它。

#include<iostream>
using namespace std;
static int d=1;

struct Btree{
    public:
    int key[2*d];
    int count;
    Btree *ptr[2*d+1];
    Btree *pptr;
};

1 个答案:

答案 0 :(得分:1)

尝试制作d const,如果你有C ++ 11使用constexpr,编译器会感到不安,因为没有理由d不能随时改变。它将T [N]视为您看到的类型(这对于优化很有用),因为您的Btree可能不完全相同而感到不安。

顺便说一句,你可以为你的Btree添加一个int模板参数,然后它会很高兴(因为整数是一个constexpr),因为该模板中的所有东西都是相同的,但你不能混合它们(Btree&lt; 1&gt;和Btree&lt; 2&gt;将无法进行交互,'通过明确(通过模板或其他方式)使用它们的函数);

如果d可以改变,你真的希望在堆上。