1

main メソッドが既にあるファイルにあるクラスを再利用するにはどうすればよいですか? たとえば、別の開発者が foo.cpp に記述した struct foo を自分のプログラム 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 は 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 からメイン メソッドを抽出できません。私が扱っている実際のコードベースでは、struct foo はもっと複雑なので、メインテナンスが不可能になるため、main.cpp にコピーできません。

4

3 に答える 3

1

構造体 foo をヘッダー内に配置します

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

必要な場所に含めてください。

于 2011-10-22T05:07:24.670 に答える
1

プリプロセッサの定義を使用して、コンパイル中に;mainなどに展開されるマクロを作成します。つまり、not_mainfoo.cpp

g++ -Dmain=not_main foo.cpp
于 2011-10-22T05:07:38.260 に答える
1

コーディング以外の解決策: 問題のコードを管理している人々に相談してください。彼らのためにそれをリファクタリングすることを申し出てください!

于 2011-10-22T05:08:27.443 に答える