使用main()重用文件中的类

时间:2011-10-22 05:05:44

标签: c++ main redefinition

如何重用已包含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.cpp中提取main方法,因为我无法控制该代码。在我正在处理的实际代码库中,struct foo更复杂,因此我无法将其复制到main.cpp中,因为它不可维护。

3 个答案:

答案 0 :(得分:1)

将struct foo放在标题

foo.h
#ifndef _STRUCT_FOO
#define _STRUCT_FOO
struct foo {
  int bar;
};
#endif

包括您需要的地方。

答案 1 :(得分:1)

在编译main时,使用预处理器定义将not_main转换为扩展为foo.cpp的宏。即,

g++ -Dmain=not_main foo.cpp

答案 2 :(得分:1)

非编码解决方案:与维护相关代码的人员交谈。提议为他们重构它!