有人能解释为什么Codeblocks会给我这些错误吗?:
error: ISO C++ forbids declaration of 'cout' with no type
error: invalid use of '::'
error: expected ';' before '<<' token
error: '<<x>>' cannot appear in a constant-expression // <<x>> is many different variable names
我的代码简单如下:
#include <iostream>
#include "myclass.h"
int main(){
std::string data;
std::string e;
e = myclass().run(data);
std::cout << e << std::endl;
return 0;
}
世界上发生了什么?
编辑:是的,我确实有iostream。对不起早点把它放在那里答案 0 :(得分:11)
添加
#include <iostream>
std::cout
位于此标题内
编辑:关于你的编辑 - 这意味着问题肯定是在myclass.h
内或者有一些代码,这里没有显示。
答案 1 :(得分:3)
#include <string>
怎么样?
没有它(和以下代码)
#include <iostream>
int main(){
std::string data;
std::string e;
std::cout << e << std::endl;
return 0;
}
我的g ++报告:
tst.cpp: In function `int main()':
tst.cpp:4: undeclared variable `string' (first use here)
tst.cpp:4: parse error before `;'
tst.cpp:5: parse error before `;'
tst.cpp:7: `e' undeclared (first use this function)
tst.cpp:7: (Each undeclared identifier is reported only once
tst.cpp:7: for each function it appears in.)
答案 2 :(得分:2)
您应该加入<iostream>
答案 3 :(得分:2)
您是否在某处包含<iostream>
?
知道您已添加<iostream>
你可以查一下:
#include <string>
如果一切正常,我想检查你的myclass.h: - (
答案 4 :(得分:1)
您发布的代码(使用EDIT)是正确的。必须有
在myclass.h
中发生了一些有趣的事情。 (也许是
#define std
,以便编译器看到::cout
。)
您可能想要查看预处理器输出:
Unix下的编译器选项-E
,Visual Studio的/E
。它
将是浩繁的,但你感兴趣的只是最后10个
左右线;预处理器对您的代码做了什么。