我一直在尝试将文件包含在包含的文件中,例如
main.cpp文件
#include <includedfile.cpp>
int main(){
cout<<name<<endl;
}
includedfile.cpp
#include <iostream>
using namespace std;
string name;
name = "jim";
此代码不起作用,debuger表示名称未定义。
答案 0 :(得分:8)
您不能在方法之外存在语句!
name = "jim"; // This is outside of any method, so it is an error.
你可以重构你的代码,所以变量声明也是一个初始赋值,它应该是有效的(我的C ++有点生疏,所以我可能在这一点上错了。)
string name = "jim";
答案 1 :(得分:0)
但是,您必须有一个很好的理由来包含.cpp文件。它发生了,但很少见!你到底想要达到什么目的?或者你只是在试验?
答案 2 :(得分:0)
更改 includedfile.cpp 以说明
string name = "jim";
应该有效(由Comeau在线确认)。 你还应该明确地做
#include <string>
否则你依赖于这是由iostream完成的事实。
答案 3 :(得分:0)
嗯,当然它不起作用,因为命名空间定义只在included.cpp中起作用。这里简单的解决方案是在main中再次编写“using”。 C \ C ++中的许多内容在“文件范围”中定义,当您在另一个中插入时,如何定义这样的范围并不是很清楚。
此外,包含cpps确实不是一个好习惯。你应该包含h \ hpp文件(标题),因为它会增加项目(凝聚力)的麻烦并产生如此讨论的问题。
#include <includedfile.h>
#include <iostream>
int main()
{
std::cout << name << endl;
}
//includedfile.cpp
void DoSomething()
{
std::string name;
name = "jim";
}
//includedfile.h
void DoSomething();