注意,我知道this question,但我想要的是不同的。
我当前的代码(我的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"
。
答案 0 :(得分:1)
没有模板解决方案,因为main
是纯C接口。
为模板特化添加了所有装饰,链接器无法知道究竟应该是什么,#34; main&#34;。
#include <MyMainWrapper.h>
MyMainWrapper<MyTemplate, MyClass> main;
这也不是一个功能,因此它不符合所需的签名。它可能是一个可调用的,但这是由C ++添加的语法糖,并没有链接。