C++编译报错:expression must have integral or unscoped enum type 求助
问题原因及解决方法
错误根源
你定义了一个名为cout的int变量,而cout本来是C++标准库中用于输出的流对象(std::cout)。由于你使用了using namespace std;,局部作用域的cout变量会覆盖全局的std::cout。当你写cout << "..."时,这里的cout是int类型,而<<作为左移运算符只能接受整数/无作用域枚举类型的操作数,传入字符串字面量就触发了编译错误。
解决方法
方法1:重命名局部变量
把你的int变量改成不会和标准库名字冲突的名称,比如my_cout:
#include <iostream> using namespace std; int main(int argc, char** argv) { int my_cout=100; int *m=&my_cout; cout<<"dia chi cua bien my_cout"<<&my_cout<<endl; cout<<"gia tri cua bien my_cout"<<my_cout<<endl; cout<<"dia chi cua bien m"<<&m<<endl; cout<<"gia tri cua bien m"<<m<<endl; return 0; }
方法2:明确使用标准库的std::cout
如果一定要保留cout作为变量名,就去掉using namespace std;,在输出时直接写std::cout:
#include <iostream> int main(int argc, char** argv) { int cout=100; int *m=&cout; std::cout<<"dia chi cua bien cout"<<&cout<<std::endl; std::cout<<"gia tri cua bien cout"<<cout<<std::endl; std::cout<<"dia chi cua bien m"<<&m<<std::endl; std::cout<<"gia tri cua bien m"<<m<<std::endl; return 0; }
内容的提问来源于stack exchange,提问作者Tuấn minh Nguyễn
相关产品推荐
相关产品推荐

