Код ниже выдает эту ошибку:
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
?