没找到元素后,如何返回引用

wangjian830202 2008-03-21 01:36:17
想写一个函数,传入key值,找类对象.

CLine &GetLineBySerialNum(int SerialNum)
{
int lineNum = QueryLineNum(SerialNum);
if (lineNum != -1)
return GetLineByLineNum(lineNum);
else //没找到
return ???? //这里应该返回什么呢?
}

这是一个对外接口,所以不希望将其改为返回指针,也不希望增加一个输出参数

有什么好的办法吗?
...全文
133 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
agaric 2008-03-21
  • 打赏
  • 举报
回复
null object
wangjian830202 2008-03-21
  • 打赏
  • 举报
回复
动态内存,创建和返回在不同的函数中,ms不是很安全啊~
xstong1982 2008-03-21
  • 打赏
  • 举报
回复
 
CLine &GetLineBySerialNum(int SerialNum)
{
int lineNum = QueryLineNum(SerialNum);
if (lineNum != -1)
return GetLineByLineNum(lineNum);
else //没找到
return new CLine(); //返回一个空的就可以了
}
dubiousway 2008-03-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cad_vc 的回复:]


CLine &GetLineBySerialNum(int SerialNum)
{
static CLine s_ErrLine;
//根据CLine的定义给出错误信息。
//......

int lineNum = QueryLineNum(SerialNum);
if (lineNum != -1)
return GetLineByLineNum(lineNum);
else //没找到
return ErrLine;
}
[/Quote]
不错。
cad_vc 2008-03-21
  • 打赏
  • 举报
回复


CLine &GetLineBySerialNum(int SerialNum)
{
static CLine s_ErrLine;
//根据CLine的定义给出错误信息。
//......

int lineNum = QueryLineNum(SerialNum);
if (lineNum != -1)
return GetLineByLineNum(lineNum);
else //没找到
return ErrLine;
}
qhfu 2008-03-21
  • 打赏
  • 举报
回复
如果找不到 有 合法的语义吗?
有的话 就返回 默认值, 如果没有的话最好还是报错..抛异常 等等..
taodm 2008-03-21
  • 打赏
  • 举报
回复
你自己不是很清楚嘛,返回指针呀
wangjian830202 2008-03-21
  • 打赏
  • 举报
回复
怎样的接口比较好? 比如现在这个function中
dubiousway 2008-03-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 taodm 的回复:]
不要设计这样的接口!!!
不要在错误的道路上越走越远。
[/Quote]

老大,讲解一下。
taodm 2008-03-21
  • 打赏
  • 举报
回复
不要设计这样的接口!!!
不要在错误的道路上越走越远。
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-03-21 01:36
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下