注:私はthis questionを認識していますが、私が望むものは異なります。テンプレートを使用してmain()を定義する
私の現在のコード(私のmain.cpp
の合計)は、実行可能ファイルにクラスを作るために、この標準の決まり文句のようになります。これは非常に喜んで働く
#include <MyHeader.h>
int main(int argc, char **argv)
{
return MyTemplate<MyClass>(argc, argv);
}
、私はやることができればそれも良いだろうちょうど:
#include <MyMainWrapper.h>
// UPDATE: commented out... MyMainWrapper<MyTemplate, MyClass> main;
MyMainWrapper<MyTemplate, MyClass> someObjectThatGeneratesMain;
それは上記のコードに拡張されます。もちろん、マクロで簡単に行うこともできますが、テンプレートソリューションがあるかどうかを確認することに興味があります。
UPDATE:私は何とかするかもしれない関数テンプレートを想像:
template<...>
extern "C" int main(int argc, char **argv)
{
//...
}
をしかし、私はテンプレートがextern "C"
することができないことがわかります。
なぜ私は1つのクラスにすべてのコードをスティックしたいと思うことはできません。最後のブロックが何を意味するのか分からず、あなたは 'main'と宣言しています。それは明らかに関数の定義ではなく、私の欺瞞のように感じます。 –
@PasserBy 'MyClass'の背後に隠れている数多くのクラスがあります。スタンドアロン操作のために' main() 'からインスタンス化することも、共有ライブラリのフォームで使用することもできます。 +マクロ定義メソッド。コアライブラリを一度構築してから、共有ライブラリフォームと複数のメインとを何度もリンクすることができます。 –
クラスと空の 'main'を宣言できます。例:' MyMainWrapper foo; int main(){}; 'MyMainWrapper'のコンストラクタが呼び出されます。それでもエントリポイントが必要です。 'main'は何もする必要はありませんが、そこに存在しなければなりません。 –