函数返回char&的问题

lfkoma1 2012-06-10 05:49:57
char& CMyString::GetAt( int nIndex )const 
{
if (nIndex <= 0 || nIndex > m_nStrLen)
{
return -1; //这里我要返回-1 代表错误,可是定义的函数返回值为cha&
//强转-1也不行,求教有啥好办法
}
return m_lpMyString[nIndex + 1];
}}
...全文
125 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lfkoma1 2012-06-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
如果你用指针,你怎么做,你能返回-1的地址吗?
[/Quote]

如果是指针的话直接返回0了 表示没找到
Lactoferrin 2012-06-10
  • 打赏
  • 举报
回复
如果你用指针,你怎么做,你能返回-1的地址吗?
lfkoma1 2012-06-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
如果你保证只用char&而不是char来接收返回值,可以用#2的方法
[/Quote]

我的思路有问题,返回引用似乎不合理,还是指返回char 谢谢.....结贴
lfkoma1 2012-06-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
你要返回引用,也可以对得到的字符修改,那么返回的引用是指向字符串中的一个字符,你返回-1,这个-1放哪里?
[/Quote]
-1放在cha&里呀
astro_lee 2012-06-10
  • 打赏
  • 举报
回复

class IndexOutOfBoundsException {}
char& CMyString::GetAt( int nIndex )const
{
if (nIndex <= 0 || nIndex > m_nStrLen)
throw IndexOutOfBoundsException();
return m_lpMyString[nIndex + 1];
}
Lactoferrin 2012-06-10
  • 打赏
  • 举报
回复
如果你保证只用char&而不是char来接收返回值,可以用#2的方法
Lactoferrin 2012-06-10
  • 打赏
  • 举报
回复
你要返回引用,也可以对得到的字符修改,那么返回的引用是指向字符串中的一个字符,你返回-1,这个-1放哪里?
lfkoma1 2012-06-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
可以用异常
[/Quote]

只是为了得到一个索引下的字符,如果索引没有就返回错误,为什么要抛异常?

在下没学过异常
lfkoma1 2012-06-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
你确定你的GetAt需要返回引用??如果实在需要返回的话就在类里面定义一个const char吧。表示是错误的char的引用。
[/Quote]

为了表示一个错误,在类里定义一个const char似乎有点浪费资源吧?

确定想返回引用,这样也可以对要得到的字符进行修改,当然了这个函数返回char* 应该更合理一些

在返回一个字符的引用 在获取中发现错误 难道就不能返回-1了吗?
Lactoferrin 2012-06-10
  • 打赏
  • 举报
回复
可以用异常
Lactoferrin 2012-06-10
  • 打赏
  • 举报
回复
return (char&)(*(char*)0);

char&a=GetAt(222);
if(&a==0)
{
}
W170532934 2012-06-10
  • 打赏
  • 举报
回复
你确定你的GetAt需要返回引用??如果实在需要返回的话就在类里面定义一个const char吧。表示是错误的char的引用。

64,692

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧