如何让C++返回一个空对象

moldau 2008-07-02 08:47:15
如下

public class TestA
{
private:
int b;
public:
TestA();
static TestA GetTestA();
};

testA testA::GetTestA()
{
TestA tmp();
if(...)
return tmp;
else
//我要返回一个 TestA 的空对象,如同 C#中的 return null; 该如何写
}



...全文
4974 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hurry281 2008-07-02
  • 打赏
  • 举报
回复
class A
{
public:
A()
{}
static A* test();
};
A* A::test()
{
A * a = new A;
if(a)
return a;
else
return NULL;
}
void mian()
{
}
晨星 2008-07-02
  • 打赏
  • 举报
回复
C++中的变量名是“值”语义,不是“引用”语义。
因此无法直接跟C#类比。
jinwei1984 2008-07-02
  • 打赏
  • 举报
回复
mark study
qhfu 2008-07-02
  • 打赏
  • 举报
回复
可以 考虑空对象模式
artman 2008-07-02
  • 打赏
  • 举报
回复
恐怕不行
testA testA::GetTestA()
{
TestA tmp();
if(...)
return tmp; //这也不行, 局部变量,函数返回就无效了!
else
//我要返回一个 TestA 的空对象,如同 C#中的 return null; 该如何写
}

这样改

testA* testA::GetTestA()
{
TestA *tmp = new TestA();
if(...)
return tmp;
else
return null;
}
babyvox1999 2008-07-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hai040 的回复:]
c++没空对象,要么返回指针,要么自己定义一个状态
[/Quote]
sukyin 2008-07-02
  • 打赏
  • 举报
回复
return TestA();

相当于返回一个临时地址。有些编译器下面好使,有些不好使。

c++其实没有空对象这么一说。你可以考虑定义一个empty()成员函数告诉编译器什么是空对象。
然后return TestA::empty()之类的方法。
hai040 2008-07-02
  • 打赏
  • 举报
回复
c++没空对象,要么返回指针,要么自己定义一个状态
chenzhp 2008-07-02
  • 打赏
  • 举报
回复
return NULL;
mingguang7213 2008-07-02
  • 打赏
  • 举报
回复
一样

64,682

社区成员

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

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