gpt4 book ai didi

c++ - 无法在同一文件中定义 2 个不同类的构造函数

转载 作者:行者123 更新时间:2023-11-28 00:37:44 24 4
gpt4 key购买 nike

我在同一个文件 employeeemployeeException 中有 2 个类。如果我为 employee 定义构造函数,我将无法为 employeeException 定义构造函数,反之亦然。尝试为两个类定义构造函数会导致以下编译错误:

no matching function call to employee

#include <iostream>
#include <string>

using namespace std;

class employee
{
public:

double operator + (employee);
bool operator == (employee);

employee(int);
double getSalary();

private:

double salary;

};

class employeeException
{
public:

employeeException(string);

void printmessage();

private:

employee e;
string message;



};



int main()
{
employee A(400);
employee B(400);

employee C = A+B;

if ( A == B)
{
cout<<"Yes";
}
else
{
cout<<"No";
}

cout<<C.getSalary();
}

employee::employee(int salary)
{
this->salary = salary;
}


double employee::operator + (employee e)
{
double total;

total = e.salary + this->salary;

return total;
}


double employee::getSalary()
{
return this->salary;
}

bool employee::operator == (employee e)
{
if ( e.salary == this->salary)
{
return true;
}
else
{
return false;
}
}

employeeException::employeeException(string message)
{

this->message = message;
}

void employeeException::printmessage()
{
cout<<endl
<<this->message
<<endl;
}

问题

1) 从上面看来,我们似乎不能在同一个文件中定义两个不同类的构造函数,有什么办法可以克服这个问题吗

2) 谁能给我解释一下为什么我们不能在同一个文件中定义两个不同类的构造函数

附加信息

我正在使用 Quincy 2005 编译代码

您可以使用这个在线编译器:http://www.compileonline.com/compile_cpp0x_online.php

结论看来我必须添加默认构造函数 employee() 才能工作,感谢大家以某种方式帮助我

最佳答案

需要在employeeException的构造函数中调用employee的构造函数。

employeeException::employeeException(string message)
: employee(42)
{
...
}

因为默认的员工构造函数是私有(private)的,一旦您声明了另一个构造函数。

关于c++ - 无法在同一文件中定义 2 个不同类的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20257137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com