gpt4 book ai didi

c++ - 将指向外部类模板成员函数的指针传递给嵌套类

转载 作者:行者123 更新时间:2023-11-30 01:15:59 24 4
gpt4 key购买 nike

我很难将指针传递给成员函数 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;
}

我做错了什么?我开始怀疑这是否可能。

最佳答案

问题在于您将变量和模板参数混为一谈。您可以使用常量指针作为模板参数,也可以将变量指针作为参数传递给函数。

这个有效:

template<typename T1>
struct Outer
{
void foo()
{
}

Outer() : inner( &Outer::foo )
{
}

template<typename T2>
struct Inner
{
// Takes a pointer at runtime to any matching signature in T2
Inner( void (T2::*f)( ) )
{
}
};

Inner<Outer> inner;
};

int main()
{
Outer<int> outer;
}

Live

或者这个有效:

template<typename T1>
struct Outer
{
void foo()
{
}

Outer() : inner( )
{
}

// Takes a pointer at compile time to a matching function in T2
template<typename T2, void (T2::*f)()>
struct Inner
{
Inner( )
{
}
};

Inner<Outer,&Outer::foo> inner;
};

int main()
{
Outer<int> outer;
}

Live

关于c++ - 将指向外部类模板成员函数的指针传递给嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27536395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com