如何在main函数中的一个对象中初始化两个类的值? C ++

时间:2018-03-08 06:44:59

标签: c++ class object header

我正在尝试从一个对象中的两个类初始化变量。

例如,在main函数中,我有:

Worker Object("Kenny Smith",23425,"1/2/2012", "Third", 1, 12.00);

在worker类中,我有以下功能:

Worker::Worker(Store Name, Store Num, Store Date, string Shift, int ShiftNumber, double Rate)
{
    Store name = Name;
    Store number = Num;
    Store date = Date;
    shift = Shift;
    shiftnumber = ShiftNumber;
    rate = Rate;
}

当我尝试编译main函数时,它给出了“没有构造函数Worker :: Worker的实例匹配参数列表”的错误,因为名称,数字和日期来自Store类。我在Worker类中包含了Store标题。

如果不分离功能,我将如何使其工作?

构造函数从Store类“Kenny Smith”获取一个字符串,Store类23425中的一个整数,Store类“1/2/2012”中的字符串,工人类“Third”中的另一个字符串, worker类1中的整数,以及worker类12.00中的double。

1 个答案:

答案 0 :(得分:-1)

您的商店类似乎需要字符串输入。

所以,我想这应该有用

Worker Object("Kenny Smith", "23425","1/2/2012", "Third", 1, 12.00);

注意第二个参数现在是一个字符串。

修改:根据评论

class Store
{
  public:
  Store(string name, int num, string data) { ... }
  Store(string name) { ... }
  Store(int num) { ... }
}

我建议你阅读一本C ++书来了解构造函数的工作原理。

修改

class Store
{
     string name_;
     int num_;
     int date_;

  public:
      Store(string name, int num, string date) { ... }
      Store(string name) { ... }
      Store(int num) { ... }

     const string& name() const { return name_ };
     string& name() {return name_};
}

现在来自您的工人类

Worker(Store a, .... )
{
    a.name() = string("ABC");
}