gpt4 book ai didi

c++ - 如何定义模板类的模板成员函数

转载 作者:IT老高 更新时间:2023-10-28 12:29:37 32 4
gpt4 key购买 nike

Possible Duplicate:
How do I define a template function within a template class outside of the class definition?

在模板类中有模板成员函数的情况下,我正在努力解决语法问题:

template <typename T> class Foo
{
void Bar(const T * t);
template <typename T2> void Bar(const T2 * t);
};

template <typename T> void Foo<T>::Bar(const T * t)
{
// ... no problem ...
}

template <typename T> void Foo<T>::Bar<typename T2>(const T2 * t)
{
// ... this is where I'm tearing my hair out ...
}

第一个成员函数很好,但是处理模板类的基类型以外的类型的模板成员函数是我遇到问题的地方。对于上述情况,我收到以下错误:

template_problem.cpp:12: error: parse error in template argument list
template_problem.cpp:12: error: expected ‘,’ or ‘...’ before ‘*’ token
template_problem.cpp:12: error: ISO C++ forbids declaration of ‘T2’ with no type
template_problem.cpp:12: error: template-id ‘Bar<<expression error> >’ in declaration of primary template
template_problem.cpp:12: error: prototype for ‘void Foo<T>::Bar(int)’ does not match any in class ‘Foo<T>’
template_problem.cpp:4: error: candidates are: template<class T> template<class T2> void Foo::Bar(const T2*)
template_problem.cpp:7: error: void Foo<T>::Bar(const T*)
template_problem.cpp:12: error: template definition of non-template ‘void Foo<T>::Bar(int)’

我还尝试了所有其他我能想到的 Bar 模板版本的语法变化。

最佳答案

template<typename T>
template<typename T2>
void Foo<T>::Bar(const T2* t)
{
// stop tearing your hair out
}

关于c++ - 如何定义模板类的模板成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11394832/

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