通过模板

时间:2017-10-06 04:19:56

标签: c++ templates main

注意,我知道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"

1 个答案:

答案 0 :(得分:1)

没有模板解决方案,因为main是纯C接口。

为模板特化添加了所有装饰,链接器无法知道究竟应该是什么,#34; main&#34;。

#include <MyMainWrapper.h>
MyMainWrapper<MyTemplate, MyClass> main;

这也不是一个功能,因此它不符合所需的签名。它可能是一个可调用的,但这是由C ++添加的语法糖,并没有链接。