c++ - 没有调用正确的构造函数

标签 c++

<分区>

这是我的标题:

//warehouse.h
#ifndef WAREHOUSE_H
#define WAREHOUSE_H
#include<string>
#include<map>
#include "dates.h"

namespace a4
{
  class warehouse
  {
      public:
          warehouse(std::string name, std::string start_date);

      private:
          std::string name;
          std::string busiest_day;
          int most_transactions;
          dates current_date;
          std::map<std::string, a4::food> items;
          void next_day();

  };
}
#endif

我的.cc:

//warehouse.cc
#include "warehouse.h"
#include "dates.h"
namespace a4
{
 //constructor
 warehouse::warehouse(std::string wname, std::string start_date)
 {
     wname = name;
     current_date = dates(start_date);

 }
 void warehouse::next_day()
 {
     current_date.next_day();
 }
}

编译错误:

warehouse.cc: In constructor ‘a4::warehouse::warehouse(std::string, std::string)’:
warehouse.cc:6: error: no matching function for call to ‘a4::dates::dates()’
dates.h:10: note: candidates are: a4::dates::dates(std::string)
dates.h:8: note:                 a4::dates::dates(const a4::dates&)

从错误来看,它似乎调用了零参数构造函数而不是采用字符串的构造函数。我构建的日期类显然没有零参数构造函数。

几个小时以来,我一直在努力解决这个问题,如有任何帮助,我们将不胜感激。在一个类似的问题中,我被告知要查找成员初始值设定项列表。我猜我已经并且不太了解如何正确实现它,因为它似乎无法解决问题。

学期刚开始几周,这是我的第一堂 C++ 课,放轻松 :)

最佳答案

这是因为您有 dates current_date; 作为 warhouse 的成员。当调用warhouse的构造函数时,会调用其所有成员变量的默认构造函数。您可以使用 : 符号更改任何成员变量的构造函数(创建 initializer list ):

warehouse::warehouse(std::string wname, std::string start_date)
    : current_date(start_date)
{
    wname = name;
}

或者简单地为 dates 定义一个空白构造函数。

关于c++ - 没有调用正确的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14616236/

相关文章:

c++ - ROS - 在代码中获取当前可用主题(不是命令)

java - 有人可以解释什么是 HelperClass 以及 Java 或 C++ 中的作用吗?

c++ - Xcode MongoDB Boost 导入 <angle>

c++ - CMake 可以生成不 * 使用 cmake 的构建脚本吗?

c++ - "read_format"结构的 "perf_event_attr"属性的选项到底是什么?

c++ - 修改task.json以编译多个c++文件

c++ - 为什么 ofstream 给我回声即。写输入两次

c++ - 将 void* 转换为方法参数

c++ - 检查 QByteArray 的特定位

c++ - constexpr 函数不在编译时计算值