这个编译器错误意味着什么 - “C ++中'='token之前的声明中的qualified-id”?

问题描述 投票:0回答:2

我试图理解类中私有const的用法。我的理解是私有const用于在类中创建一些常量,而static用于创建一个副本。

最初,我的代码使用了pi,它的数据类型是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()到outside,如果我也删除私有,则删除错误。

c++ c++11 c++14
2个回答
1
投票

MyExample::x是一个qualified-id,你把它放在=令牌之前的声明中。在块范围内不允许这样做。


0
投票

因为变量'x'是私有访问修饰符,这意味着变量x仅在类中使用。所以你不能在main函数中使用该变量。

并且有2个建议。

首先,制作getter,setter方法。

第二,更改为公共访问修饰符。

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.