为什么在此代码中出现编译错误?

问题描述 投票:-3回答:1

我有此代码,当我编译它时,出现编译错误。

    #include <iostream>
    #include <string>
    using namespace std;

    struct Date{
      int day;
      int month;
      int year;
    };

  class appointment{
     public:
       appointment(int d,int m,int y,string n);
     private:
       struct Date date;
       string name;

   };

   int main()
   {
     appointment a(22,12,2019,"James"); 
   } 

   appointment::appointment(int d,int m,int y,string n) :
      date.day(d),date.month(m),date.year(y),name(n)
   {

   }

但是,当我注释构造函数并使用此版本的构造函数时,一切正常

  appointment::appointment(int d,int m,int y,string n) 
//date.day(d),date.month(m),date.year(y),name(n)
{
  date.day=d;
  date.month=m;
  date.year=y;
  name=n;
}
c++ constructor
1个回答
0
投票

您不能像这样逐段地初始化对象。相反,使用聚合初始化一次即可初始化整个date成员:

© www.soinside.com 2019 - 2024. All rights reserved.