通过 main() 重用文件中的类
如何重用已具有 main 方法的文件中的类?例如,我想使用另一个开发人员在我自己的程序 main.cpp 中的 foo.cpp 中编写的 struct foo:
//-- foo.cpp --
struct foo {
int bar;
};
int main() {
return 0;
}
//-- end foo.cpp --
//-- main.cpp --
#include "foo.cpp"
int main() {
foo f;
f.bar = 1;
return f.bar;
}
//-- end main.cpp
main.cpp 将无法使用 g++ 4.4.4 进行编译,并给出错误:
main.cpp: In function "int main()":
main.cpp:2: error: redefinition of "int main()"
foo.cpp:4: error: "int main()" previously defined here
我无法从 foo 中提取 main 方法。 cpp 因为我不控制该代码。在我正在处理的实际代码库中,struct foo 更复杂,因此我无法将其复制到 main.cpp 中,因为它将无法维护。
How can I reuse a class that is in a file that already has a main method? E.g. I would like to use struct foo that another developer wrote in foo.cpp in my own program, main.cpp:
//-- foo.cpp --
struct foo {
int bar;
};
int main() {
return 0;
}
//-- end foo.cpp --
//-- main.cpp --
#include "foo.cpp"
int main() {
foo f;
f.bar = 1;
return f.bar;
}
//-- end main.cpp
main.cpp will not compile using g++ 4.4.4, giving the errors:
main.cpp: In function "int main()":
main.cpp:2: error: redefinition of "int main()"
foo.cpp:4: error: "int main()" previously defined here
I cannot extract the main method from foo.cpp because I do not control that code. In the actual codebase I am dealing with, struct foo is more complicated so I cannot copy it into main.cpp, since it would be unmaintainable.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在编译
foo.cpp
时,使用预处理器定义将main
变成一个扩展为not_main
的宏; IE,Use a preprocessor define to make
main
into a macro that expands to, for example,not_main
, while you're compilingfoo.cpp
; i.e.,非编码解决方案:与维护相关代码的人员交谈。提议为他们重构它!
Non-coding solution: go talk to the people who maintain the code in question. Offer to refactor it for them!
将 struct foo 放在 header
include 中,无论您需要什么地方。
place the struct foo inside a header
include that wherever you need it.