请注意,我知道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'不必做任何事情,但它必须在那里,或者其他一些入口点。 –