C++类模板的问题

文档里有这样的一个范例,我在程序里运行时老是报错。大神看一下,怎么改。#include<iostream>usingnamespacestd;template<class... 文档里有这样的一个范例,我在程序里运行时老是报错。大神看一下,怎么改。#include <iostream>using namespace std;template <class T> class pair{ T value1, value2; public: pair(T first, T second) { value1 =first; value2=second; } T getmax(); };template <class T>T pair::getmax (){ T retval; retval = value1>value2? value1:value2; return retval;};int main() { pair myobject(100,75); cout<<myobject.getmax(); return 0;}运行时提示:
#include <iostream>
using namespace std;
template <class T> class pair
{
T value1, value2;
public:
pair(T first, T second)
{
value1 =first;
value2=second;
}
T getmax();
};
template <class T>T pair::getmax ()
{
T retval;
retval = value1>value2? value1:value2;
return retval;
};
int main()
{
pair myobject(100,75);
cout<<myobject.getmax();
return 0;
}
展开
 我来答
繁简知音
2018-07-18 · TA获得超过174个赞
知道小有建树答主
回答量:168
采纳率:91%
帮助的人:113万
展开全部

你的代码有如下问题:

  1. pair与std标准库的pair命名冲突,一般来说尽量不要使用using namespace std;使用std::cout这种格式是一种良好的编程

  2. 定义函数template <class T>T pair::getmax ()格式不对,应该为template <class T>T pair<T>::getmax ()

  3. pair myobject(100,75);使用模板类应该传入类型,即pair<int> myobject(100,75);

修改后代码如下:

#include <iostream>

template <class T>
class pair
{
private:
    T value1, value2;
public:
    pair(T first, T second)
    {
        value1 =first;
        value2=second;
    }
    T getmax();
};

template <class T>
T pair<T>::getmax ()
{
    T retval;
    retval = value1 > value2 ? value1 : value2;
    return retval;
};

int main()
{
    pair<int> myobject(100,75);
    std::cout << myobject.getmax() << std::endl;
    return 0;
}

编译运行结果如下:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式