在这里,我正在尝试使用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;
};
答案 0 :(得分:1)
尝试制作d const,如果你有C ++ 11使用constexpr,编译器会感到不安,因为没有理由d不能随时改变。它将T [N]视为您看到的类型(这对于优化很有用),因为您的Btree可能不完全相同而感到不安。
顺便说一句,你可以为你的Btree添加一个int模板参数,然后它会很高兴(因为整数是一个constexpr),因为该模板中的所有东西都是相同的,但你不能混合它们(Btree&lt; 1&gt;和Btree&lt; 2&gt;将无法进行交互,'通过明确(通过模板或其他方式)使用它们的函数);
如果d可以改变,你真的希望在堆上。