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

Posted

技术标签:

【中文标题】如何在主函数的一个对象中初始化两个类的值? C++【英文标题】:How do I initialize values from two classes in one object in the main function? C++ 【发布时间】:2018-03-08 06:44:58 【问题描述】:

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

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

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

在工人阶级中,我有这个功能:

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”中获取一个字符串,从 worker 类“Third”中获取另一个字符串,工人阶级 1 的整数,工人阶级 12.00 的双精度数。

【问题讨论】:

请发minimal reproducible example。 aee 需要的详细信息正是minimal reproducible example。请仔细阅读minimal reproducible example 的含义。 你的代码没有意义。如果你需要传递一个 store,你的构造函数应该接受一个 Store 对象。如果你需要传递一个字符串、一个数字和另一个字符串,那么你的构造函数应该接受这些。 Worker 构造函数需要一堆 Store 参数,你只能使用字符串来构造一个,除非你有其他代码允许你这样做,否则这是无法完成的。在您发布更多代码之前,我认为没有人能理解。 构造函数从 Store 类 "Kenny Smith" 中获取一个字符串,从 Store 类 23425 中获取一个整数,从 Store 类 "1/2/2012" 中获取一个字符串,从 worker 类中获取另一个字符串“第三”,一个来自工人阶级 1 的整数,一个来自工人阶级 12.00 的双精度数。 【参考方案1】:

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

所以,我想这应该可行

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 类

Worker(Store a, .... )

    a.name() = string("ABC");

【讨论】:

对不起,我应该澄清一下。它是一个整数。 函数本身就是Store(string Name, int Num, string Date); 那么你应该传递 Worker 对象( Store("Kenny Smith", num, date), .... )。或者你应该在 Store 类中定义可以使用字符串和整数参数初始化类成员的构造函数。 我也试过了,但它仍然给我同样的错误。另外,是否可以从 Worker 类初始化 Store 类成员? 是的,我想那样在 Store 类中创建一个构造函数,但是这样会使我在主要问题中编写的构造函数变得不必要。我想在 Worker 类中包含 Store 类中的变量。

以上是关于如何在主函数的一个对象中初始化两个类的值? C++的主要内容,如果未能解决你的问题,请参考以下文章

C++关于类的,两个题,大一下

c++,类的对象作为形参时一定会调用复制构造函数吗?

C++ 错误:没有用于初始化的匹配构造函数

C++ 错误:没有用于初始化的匹配构造函数

C++遍历获得一个类的所有属性名,对该类的实例的所有属性的值 ...~~

C++ 中,类的实例化对象是指啥?如果确保它的实例化对象只得一个?