【发布时间】:2014-12-17 22:57:19
【问题描述】:
我很难将指向成员函数Outer<T>::foo 的指针传递给嵌套类Outer 的构造函数,如下所示(另请参见ideone)。
template<typename T1>
struct Outer
{
void foo()
{
}
Outer() : inner( &Outer::foo ) // ERROR: compiles without &Outer::foo and Inner( F f ), below
{
}
template<typename T2, void (T2::*F)()>
struct Inner
{
Inner( F f ) // ERROR
{
}
};
Inner<Outer,&Outer::foo> inner;
};
int main()
{
Outer<int> outer;
}
我做错了什么?我开始怀疑这是否可能。
【问题讨论】:
-
你指的不是Outer::foo,没有考虑扩展版本。编译器在尝试实例化模板本身时还不知道要抓取哪个特定的函数指针!
-
F不是类型,它是函数指针。如果您已经知道对象是什么,为什么还要传递参数? -
抱歉,我没有看到任何嵌套类...
-
@Bot 嗯?
Outer<T1>::Inner是嵌套模板类型。 -
仍然没有看到任何类,只有结构和模板
标签: c++ templates nested-class