【发布时间】:2018-09-14 07:41:52
【问题描述】:
下面的代码会产生这个错误:
class HASHTABLE
{
public:
const int DIMENSION = 10;
struct NODE
{
char* INFO;
NODE* LINK;
};
NODE arr1[DIMENSION];
};
int main()
{
const int dimension=10;
struct node
{
char* info;
node* link;
};
node arr2[dimension];
};
所以,int main() 中的代码没有错误,但是当我声明 NODE arr1[DIMENSION]; 时,class HASHTABLE 中的代码出现错误:int(10) a nonstatic member reference must be relative to specific object.
解决方案很明显,只需输入static const int DIMENSION = 10;,我就不会出错。
但是对于我对 C++ 的了解程度,main 和 class 中的这段代码是相同的。
谁能解释一下幕后发生了什么?
另外,我希望我明白这一点:
如果我将DIMENSION 声明为静态,我使用HASHTABLE 创建的每个对象也将具有相同的DIMENSION,但我认为这是通过使用const 来保护的?
【问题讨论】: