Что означает эта ошибка компилятора - "квалифицированный идентификатор в объявлении перед '=' токеном" в C ++? - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь понять использование private const в классе. Насколько я понимаю, приватный const используется для того, чтобы сделать что-то постоянное внутри класса и статический для получения одной копии.

Первоначально мой код использовал пи, и его тип данных был float. Итак, я попытался изменить float на int, потому что я читал const static, разрешено только для типов int внутри класса.

#include <iostream>
class MyExample
{

 private:
   static const int x;

};

int main(void)
{
  int const  MyExample::x = 3;

  std::cout<<"x value is "<<MyExample::x<<std::endl;

  return 0;
}

компиляция -

$g++ -std=c++14 test.cpp
test.cpp: In function ‘int main()’:
test.cpp:12:27: error: qualified-id in declaration before ‘=’ token
   int const  MyExample::x = 3;

Я знаю, что перемещение строки "int const MyExample :: x = 3;" из main () наружу, удаляет ошибку, если я также удаляю private.

Ответы [ 2 ]

1 голос
/ 25 марта 2019

MyExample::x является квалифицированным идентификатором , и вы поместили его в объявление перед токеном =.Это не разрешено в области видимости блока.

0 голосов
/ 25 марта 2019

, поскольку переменная 'x' является модификатором частного доступа, это означает, что переменная x используется только в классе. Поэтому вы не можете использовать эту переменную в основной функции.

и есть 2 предложения.

сначала создайте метод получения, метод установки.

секунда, перейти на модификатор публичного доступа.

спасибо

...