【发布时间】:2020-07-06 03:45:45
【问题描述】:
此程序初始化一个类的对象并将其作为参数传递给另一个成员函数。 当我发表声明时
Address a2=a1;
它没有显示错误。但是当我将参数作为对象时
Employee(int id, string name, Address address);
并使用它调用它
Employee e1 = Employee(101,"Nakul",a2);
它显示以下错误。
#include <iostream>
using namespace std;
class Address {
public:
string addressLine, city, state;
Address(string addressLine, string city, string state)
{
this->addressLine = addressLine;
this->city = city;
this->state = state;
}
};
class Employee
{
private:
Address address; //Employee HAS-A Address
public:
int id;
string name;
Employee(int id, string name, Address address) //Here it is showing an error
{
this->id = id;
this->name = name;
this->address = address;
}
void display()
{
cout<<id <<" "<<name<< " "<<
address.addressLine<< " "<< address.city<< " "<<address.state<<endl;
}
};
int main(void) {
Address a1= Address("C-146, Sec-15","Noida","UP");
Address a2=a1; //Here it is showing no error.
Employee e1 = Employee(101,"Nakul",a2);
e1.display();
return 0;
}
错误是
error: no matching function for call to ‘Address::Address()’
{
^
【问题讨论】:
-
您实际上并没有使用
address参数来初始化this->address成员。赋值不是初始化。在您最喜欢的 C++ 教科书中阅读构造函数初始化器列表。
标签: c++ oop constructor