gpt4 book ai didi

c++ - 防止模板偏特化错误

转载 作者:行者123 更新时间:2023-11-30 01:42:06 28 4
gpt4 key购买 nike

有一个代码:

#include <functional>

template<typename DataType, typename Compare=std::less<DataType>>
class MyClass {
public:
explicit MyClass(const Compare& f = Compare()) {
compare = f;
};

bool foo(DataType, DataType);
private:
Compare compare;
};

template<typename DataType>
bool MyClass<DataType>::foo(DataType a, DataType b) {
return compare(a, b);
}

编译时出现错误:

error: nested name specifier 'MyClass<DataType>::'
for declaration does not refer into a class, class template or class
template partial specialization bool MyClass<DataType>::foo(DataType a, DataType b) {

如何防止错误并在类外声明方法?

最佳答案

您必须像在主模板定义中那样提供模板参数:

//        vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
template <typename DataType, typename X>
bool MyClass<DataType, X>::foo(DataType a, DataType b) {
// ^^^^^^^^^^^
return compare(a, b);
}

关于c++ - 防止模板偏特化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40130179/

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