C++ 在C++;

C++ 在C++;,c++,setter,getter,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;

我现在有

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,等等。。
我想知道是否有一个更好的普遍接受的方式来做到这一点。也许操作重载是个好主意?

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

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

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

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

如果您的类有一个可以为null的成员指针,然后简单地从getter函数返回指针,让用户担心角落的情况

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

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

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

如果您的类有一个可以为null的成员指针,然后简单地从getter函数返回指针,让用户担心角落的情况

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

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

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

如果您的类有一个可以为null的成员指针,然后简单地从getter函数返回指针,让用户担心角落的情况

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

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

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

请提供您的类示例。你的二传手和接球手都很奇怪。这篇文章可能会对你有所帮助。它有一点帮助,但它没有涵盖对象未初始化和指向nullptr的情况。你的对象如何指向nullptr?您是否正在使用指针(可能不应该)?正如我说的,你能提供一个类的例子吗?我第二个硬币,提供一个。你的代码过于简单,有很多错误。我没有编译,这也无助于明确您想要实现的目标。也许试着解释(并理解)Do stuff是什么意思。请提供你的课堂示例。你的二传手和接球手都很奇怪。这篇文章可能会对你有所帮助。它有一点帮助,但它没有涵盖对象未初始化和指向nullptr的情况。你的对象如何指向nullptr?您是否正在使用指针(可能不应该)?正如我说的,你能提供一个类的例子吗?我第二个硬币,提供一个。你的代码过于简单,有很多错误。我没有编译,这也无助于明确您想要实现的目标。也许试着解释(并理解)Do stuff是什么意思。请提供你的课堂示例。你的二传手和接球手都很奇怪。这篇文章可能会对你有所帮助。它有一点帮助,但它没有涵盖对象未初始化和指向nullptr的情况。你的对象如何指向nullptr?您是否正在使用指针(可能不应该)?正如我说的,你能提供一个类的例子吗?我第二个硬币,提供一个。你的代码过于简单,有很多错误。我没有编译,这也无助于明确您想要实现的目标。也许试着解释(并理解)Do stuff是什么意思。请提供你的课堂示例。你的二传手和接球手都很奇怪。这篇文章可能会对你有所帮助。它有一点帮助,但它没有涵盖对象未初始化和指向nullptr的情况。你的对象如何指向nullptr?您是否正在使用指针(可能不应该)?正如我说的,你能提供一个类的例子吗?我第二个硬币,提供一个。你的代码过于简单,有很多错误。我没有编译,这也无助于明确您想要实现的目标。也许试着解释(并理解)DoStuff是什么意思。