使用C ++更好地练习堆对象getter / setter

时间:2015-06-03 09:05:04

标签: c++ setter getter

我目前正在

Type1 &GetType1() const
{
    return *this->type1;
}

void SetType1(const Type1 &type1)
{
    *this->type1 = type1;
}

并在类定义中

class Type2
{
    public:
        Type2();
        virtual ~Type2();
        Type1 &GetType1() const;
        void SetType1(const Type1 &type1);
    private:
        Type1 *type1 = nullptr;

}

在主要

 int main()
 { 
       Type2 *type2 = new Type2();
       Type1 *newType1 = new Type1();
       type2->SetType1(*newType1);

       delete type2;
       delete newType1;
  }

我的项目无处不在。在我看来,这不是一个非常安全的方法,有些情况下对象指向NULL等。 我想知道是否有更好的普遍接受的方式来做到这一点。也许opperation重载是一个好主意?

1 个答案:

答案 0 :(得分:3)

如果你的类有一个可以为null的成员指针,那么只需从getter函数返回指针,让用户担心角落情况。

Type1* GetType1(){
  return this->type1;
}

void SetType1(Type1* type1) {
  this->type1 = type1;
}

如果成员实际上不能变为null,这是一个类不变量,那么我认为返回引用是一个好习惯,并在getter中使用断言。