請注意,我知道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;
而這將擴展到上面的代碼。這當然可以很容易地用宏來完成,但我有興趣看看是否有模板解決方案,或者如果沒有,爲什麼不呢?
更新:我想一個函數模板,可能以某種方式做:
template<...>
extern "C" int main(int argc, char **argv)
{
//...
}
但我看到的模板不能extern "C"
。
我無法理解爲什麼你想要把所有的代碼粘到一個類中。儘可能地,我不明白最後一塊應該是什麼意思,你聲明瞭一個名爲'main'的東西,它顯然不是一個函數定義,對我來說就像是一個騙局。 –
@PasserBy MyClass後面隱藏着許多其他的類,它們可以從main()實例化來進行獨立操作,或者用於共享庫形式,該形式有不同的模板+宏定義方法。我將事情分開,以便構建核心庫一次,然後多次使用共享庫表單和多個主幹鏈接。 –
你可以聲明這個類和一個空的'main',例如:'MyMainWrapper foo; int main(){};'MyMainWrapper'的構造函數將被調用。你仍然需要一個入口點。 'main'不必做任何事情,但它必須在那裏,或者其他一些入口點。 –