【发布时间】:2013-11-28 03:21:57
【问题描述】:
我在同一个文件 employee 和 employeeException 中有 2 个类。如果我为 employee 定义构造函数,我将无法为 employeeException 定义构造函数,反之亦然。尝试为这两个类定义构造函数会导致以下编译错误:
没有对员工的匹配函数调用
#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个不同类的构造函数,有什么办法可以克服这个
2) 谁能解释一下为什么我们不能在同一个文件中定义 2 个不同类的构造函数
其他信息
我正在使用 Quincy 2005 编译代码
你可以使用这个在线编译器:http://www.compileonline.com/compile_cpp0x_online.php
结论 看来我必须添加默认构造函数 employee() 才能工作,感谢大家以一种或另一种方式帮助我
【问题讨论】:
-
没有这样的限制。您收到的错误是什么?我看到的一个问题是employeeException 包含一个员工,而员工没有默认构造函数。因此,构造一个employeeException会产生一个错误......但这与实现构造函数的文件无关。
-
应该可以。你得到的实际错误是什么?
-
哪一行出现错误?
-
在employeeException::employeeException(string message) { this->message = message; }
-
您可以复制粘贴代码并取消注释行以查看错误
标签: c++ class debugging exception constructor