模板类中成员函数的返回值问题?

acqy 2006-08-27 04:43:53
template <class T> class MyClass {
private:
vector<T> list;
public:
T GetValue(int index)
{
if(index < 0 || index >= list.size()) return ???; // 这里到底应该返回什么值呢?
else return list.at(index);
}
};

上面的代码中,???这个地方应该怎么写呢?
...全文
234 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
chenhu_doc 2006-08-27
想了解一个派生的处理异常的类:

class isbn_mismatch

reference to:

http://linuxbbs.cn/forum/viewthread.php?tid=159&extra=page%3D1
  • 打赏
  • 举报
回复
chenhu_doc 2006-08-27
#include <iostream>
#include <vector>
#include <stdexcept>
using namespace std;


template <class T> class MyClass {
private:
vector<T> list;
public:
MyClass(): list(10,1){}
T GetValue(int index)
{
if(index < 0 || index >= list.size())
{
throw out_of_range(string("out_of_range() is out of range"));
}
else return list.at(index);
}
};


int main()
{
MyClass<int> a;

try{
a.GetValue(10);
}catch(const out_of_range & msg )
{
cerr << msg.what() <<endl;
}

system("pause");
return 0;
}
  • 打赏
  • 举报
回复
chenhu_doc 2006-08-27
return T(); //用类型T的默认构造函数返回一个T对象。
//通过在调用函数中对返回值的判断可以得出GetValue 的状态

不过,用到异常处理是最好的选择了!
因为处在 out_of_range 的情况,没有合适的可返回值!
  • 打赏
  • 举报
回复
believefym 2006-08-27
或者return NULL;
  • 打赏
  • 举报
回复
believefym 2006-08-27
看错
超出index范围了还用得着返回吗?
assert(index>0 && index<=list.size());
  • 打赏
  • 举报
回复
believefym 2006-08-27
else return list.at(index);
楼主,这个else不会看吗?
  • 打赏
  • 举报
回复
OOPhaisky 2006-08-27
if(index < 0 || index >= list.size()) return T();
else return list.at(index);
  • 打赏
  • 举报
回复
发帖
C++ 语言

6.2w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2006-08-27 04:43
社区公告
暂无公告