【问题标题】:How do I call a method function from a class with more than one object/field如何从具有多个对象/字段的类中调用方法函数
【发布时间】:2017-06-02 19:41:12
【问题描述】:

我创建以下类作为示例

class Date{

public:
   setDate( Date &obj );

private:
   int day, month, year;

};

那么在main() 中我想使用函数setDate() 但在这种情况下如何填写date & obj

void main(){

    Date * today;
    today->setDate( ??? );
}

【问题讨论】:

  • 传递另一个 Date 对象。也用today->setDate(),参数应该改成Date const &
  • 似乎没有办法设置日期。该界面建议您只能将日期设置为另一个日期对象,这意味着没有指定任意日期。
  • 您已经创建了一种从另一个Date 设置Date 的方法,但这使得无法设置第一个Date。您可能需要一个构造函数或函数来从其组件中设置Date,例如Date(int day, int month, int year)
  • 你为什么使用new而不使用delete?你为什么要使用new
  • 你学的很差。 C++ 不是 Java 或 C#。您不需要使用new 来创建类的实例。

标签: c++ function class


【解决方案1】:

1) 首先,不要使用裸new,如果没有必要也不要使用new al all。因为它会导致内存泄漏问题。

2) 不要使用 setter,只需使用构造函数。

3) 在重载的Date 构造函数中使用const Date &

4) 使用初始化列表初始化Date。使用重载的构造函数Date 使用对其他Date 的常量引用来构建Date

5) 在 C++ 中,main 的返回类型必须是 int

class Date{

  public:
    Date( int dd, int mm, int yyyy);
    Date( const Date &obj );

  private:
    int day, month, year;

};

int main(){

    Date now = {02,06,2017};

    Date today(now);
    return 0;
}

6) 现在,如果你真的需要一个 setter 函数,你可以这样做:

class Date{

public:
Date(int day, int month, int year); //A
Date( const Date &obj );  //B

void setDate( const Date &obj );

private:
   int day, month, year;

};

int main(){

    Date now = {02,06,2017};

    Date today(now);

    today.setDate({02,06,2017}); //Setter example using initilizer list + contructor A 
    today.setDate(now); //Setter example
    return 0;
}

【讨论】:

    猜你喜欢
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 2014-12-27
    • 2017-11-09
    • 2016-01-22
    相关资源
    最近更新 更多