gpt4 book ai didi

c++ - 在 Visual Studio 2008 中使用指向模板函数的指针编译错误

转载 作者:可可西里 更新时间:2023-11-01 15:25:26 25 4
gpt4 key购买 nike

我正在尝试创建一个模板类来存储指向模板函数的函数指针,但在 Visual Studio 2008 中遇到了编译错误。我为它创建了一个简化的测试用例(见下文),但仍然无法编译在 VS2008 中,但似乎在我试过的在线 Comeau 和在线 GCC 编译器上编译成功。

我看到的错误是:

error C2436: 'func' : member function or nested class in constructor initializer list
temp.cpp(21) : while compiling class template member function 'test_class<T>::test_class(T (__cdecl &))'
1> with
1> [
1> T=int (const int &)
1> ]

使用非模板函数的相同测试有效。除此之外,有没有人知道该问题的解决方法,或者 VS2008 是否需要某种不同的语法?

谢谢,

杰瑞

template<class T>
T template_function(const T& arg)
{
return arg;
}

int non_template_function(const int& arg)
{
return arg;
}

template<class T>
class test_class
{
public:
test_class(const T& arg) : func(arg) {}
private:
T func;
};

template<class T>
void create_class(const T& arg)
{
new test_class<T>(arg);
}

int main()
{
create_class(&template_function<int>); //compile fails unless this is commented out
create_class(&non_template_function);
return 0;
}

最佳答案

固定在两个地方;

T* func; //make this pointer type!

和,

 create_class(template_function<int>); //remove '&'
create_class(non_template_function); //remove '&'

完成!

关于c++ - 在 Visual Studio 2008 中使用指向模板函数的指针编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4972286/

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