这个编译器错误意味着什么 - “C ++中'='token之前的声明中的qualified-id”?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这个编译器错误意味着什么 - “C ++中'='token之前的声明中的qualified-id”?相关的知识,希望对你有一定的参考价值。
我试图理解类中私有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,如果我也删除私有,则删除错误。
答案
MyExample::x
是一个qualified-id,你把它放在=
令牌之前的声明中。在块范围内不允许这样做。
另一答案
因为变量'x'是私有访问修饰符,这意味着变量x仅在类中使用。所以你不能在main函数中使用该变量。
并且有2个建议。
首先,制作getter,setter方法。
第二,更改为公共访问修饰符。
谢谢
以上是关于这个编译器错误意味着什么 - “C ++中'='token之前的声明中的qualified-id”?的主要内容,如果未能解决你的问题,请参考以下文章