【发布时间】:2015-09-15 17:52:25
【问题描述】:
我需要一个模板类。我想向模板传递一个类型,然后是两个成员变量指针。我希望将第二个指针默认为 NULL,因此是可选的。这可能吗?如果可以,语法是什么?
我期望的语法是
template<typename T, int T::*VALUE1, int T::*VALUE2 = NULL>
class Foo { ... }
但是,当我尝试实例化此类的实例时;
Foo<Bar, &Bar::var1> fooBar;
虽然使用以下作品进行实例化
Foo<Bar, &Bar::var1, &Bar::var2> fooBar
给出的错误(来自 g++ 4.4)是
错误:无法将模板参数“0l”转换为“int Bar::*”
请注意,我不能使用 c++11,因此不能使用 nullptr
【问题讨论】:
-
但是,当您尝试实例化(而不是煽动)...什么?它不编译吗?编译器给出什么错误?
-
因为你在应该使用
nullptr时使用NULL -
nullptr 会很好,但我不能使用 c++11 所以不能使用它