【发布时间】:2012-05-28 23:17:12
【问题描述】:
我有一个构造函数原型,如下所示:
template <typename type_position> window(
const int size[2],
const char* caption="Window", const SDL_Surface* icon=NULL,
bool fullscreen=false, bool vsync=true, bool resizable=false, int multisample=0,
type_position position=type_position(0)
)
然后我想构造一个实例:
new window(screen_size,"My Window",NULL,fullscreen);
问题(我假设)是不能明确指定T(即,它可以是int 或long 或short 等)。我得到了错误:
错误 C2660: 'window' : 函数不接受 4 个参数
然后我尝试指定类型:
new window<int>(screen_size,"My Window",NULL,fullscreen);
但这不起作用:
错误 C2512:“窗口”:没有合适的默认构造函数可用
错误 C2062:意外键入“int”
我已经做了一些研究,我能得到的最接近的问题是“C++ template function default value”,除了在我的例子中,模板参数可以从第一个参数中推断出来。
那么,我是卡住了还是缺少了什么?
【问题讨论】:
-
你用的是什么编译器?因为使用 VS2010 func
("Hello");工作正常。 -
你能发布一个简短的例子来重现你的问题吗?
-
什么不起作用?你的建议对我有用:ideone.com/n0jgN
-
对不起;我有一个更复杂的例子,我把它简化了。使用VS2010。谢谢,