以下代码会产生此错误:
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()
中的代码没有错误,但是当我声明class HASHTABLE
时却出现了NODE arr1[DIMENSION];
int(10) a nonstatic member reference must be relative to specific object.
中的代码却没有错误
解决方案很明显,只需输入static const int DIMENSION = 10;
,我就不会出错。
但是,对于我对C ++的了解程度,main
和class
中的代码是相同的。
有人可以解释幕后发生的事情吗?
我也希望我能理解:
如果我将DIMENSION
声明为静态对象,那么我使用HASHTABLE
创建的每个对象也将具有相同的DIMENSION
,但是我认为通过使用const
来保证安全吗?