作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
这个应该很简单。我正在使用模板,但遇到编译器错误。
#include <iostream>
template <class T1, class T2>
class Pair
{
private:
T1 a;
T2 b;
public:
T1& first();
T2& second();
Pair(const T1& aval, const T2& bval) : a(aval), b(bval) {}
};
template <class T1, class T2>
T1& Pair<T1,T2>::first()
{
return a;
}
template <class T1, class T2>
T2& Pair<T1,T2>::second()
{
return b;
}
// Explicit Specialization
template <>
class Pair<double, int>
{
private:
double a;
int b;
public:
double& first();
int& second();
Pair(const double& aval, const int& bval) : a(aval), b(bval) {}
};
template <>
double& Pair<double,int>::first()
{
return a;
}
template <>
int& Pair<double,int>::second()
{
return b;
}
int main(int argc, char const *argv[])
{
Pair<int, int> pair(5,6);
//Pair<double,int> pairSpec(43.2, 5);
return 0;
}
错误看起来像这样
main.cpp:42:27: error: no function template matches function template specialization 'first'
double& Pair<double,int>::first()
^
main.cpp:49:24: error: no function template matches function template specialization 'second'
int& Pair<double,int>::second()
有什么可能出错的线索吗?
最佳答案
您不需要在方法声明之前声明模板<>。
double& Pair<double,int>::first() {
return a;
}
int& Pair<double,int>::second() {
return b;
}
应该够了。
关于c++ - 显式模板特化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28928239/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
正如您在 this travis.yml 中看到的那样文件,我的代码依赖于一些第三方库,我在构建项目之前将它们安装在远程系统上。 Travis 每次推送提交时都会下载并构建这些库,这可以避免吗?我的意
我是一名优秀的程序员,十分优秀!