我正在通过创建一个管理员工的程序来挑战自己,从而努力提高C ++的水平。给定一定的薪水与销售额,您将被雇用,解雇或保留工作。我最近一直在与OOP合作,并认为按班级构造OOP会使练习更容易。我已经一遍又一遍地解决了这个问题,但似乎找不到解决方法。话虽这么说,我将非常感谢我对自己做错的一些见解。请记住,我是C ++和OOP的新手,但是学到的知识越多,以后的发展就会越好。
最初是全部一个文件,然后我将类分为头文件。现在看来运行起来更加顺畅,但仍然出现错误,我的程序范围中未定义名称,薪水和范围(我的变量)。
main.cpp
#include "Boss.h"
#include "Employee.h"
#include "PotentialEmployee.h"
#include <iostream>
using namespace std;
int main ()
{
Boss Boss1;
Boss Boss2;
Boss Boss3;
Employee Employee1;
Employee Employee2;
Employee Employee3;
PotentialEmployee PotentialEmployee1;
PotentialEmployee PotentialEmployee2;
Employee1.name = "Michael";
Employee2.name = "John";
Employee3.name = "Lisa";
Boss1.name = "Luke";
Boss2.name = "Ben";
Boss3.name = "Jack";
PotentialEmployee1.name = "Bill";
PotentialEmployee2.name = "Fred";
Employee1.salary = 55000;
Employee2.salary = 65000;
Employee3.salary = 75000;
Boss1.salary = 88000;
Boss2.salary = 95000;
Boss3.salary = 88000;
PotentialEmployee1.salary = 55000;
PotentialEmployee2.salary = 65000;
Employee1.sales = 12000;
Employee2.sales = 40000;
Employee3.sales = 80000;
Boss1.sales = 200000;
Boss2.sales = 250000;
Boss3.sales = 280000;
PotentialEmployee1.sales = 55000;
PotentialEmployee2.sales = 65000;
if (sales <= salary)
std::cout << "I'm sorry " << name << "you have been fired";
else if (sales >= salary)
std::cout << "Good job " << name << "you get a bonus";
else
std::cout << "Try and do better next quarter";
return 0;
}
main.cpp:在函数“ int main()”中:main.cpp:66:7:错误:“ sales”为 如果(销售额<=薪水){^ main.cpp:66:16: 错误:如果(销售额<=工资){ ^ main.cpp:67:34:错误:未在此范围内声明“名称” std :: cout <<“对不起” <<名字<<“您被解雇了”; ^ main.cpp:71:35:错误:在此范围std :: cout中未声明“名称” <<“干得好” <<名称<<“您将获得奖金”;
答案 0 :(得分:2)
由于错误试图告诉您,sales
中没有声明salary
,也没有声明main
。您可能想引用Employee
的{{1}}和sales
,那就是
salary
更多提示:
if (Employee1.sales <= Employee1.salary)
std::cout << "I'm sorry " << name << "you have been fired";
,foo1
,foo2
命名时,都应使用foo3
或数组。这将帮助您遍历所有员工并评估他们的销售/工资。std::vector
和{}
的{{1}}是可选的,但是以任何方式编写它们通常更好。 if
,则两个条件都成立,但只有第一个条件会被评估。因此,这里有一个很小的混乱:观察else
条件,人们可能期望拥有sales == salary
的员工做得很好,但是他们会被解雇:(PS:
我希望以一种更通用的方式做到这一点,而不必 每次写出Boss1,Boss2,Boss3,但看起来像这样 最好的方法
当您发现自己编写的代码块包含大量else
时,那么该代码块是在成员函数中实际实现的一个不错的选择(您无需在对象前加上前缀)。例如,员工可能有一个sales == salary
,其中包含您现在主要拥有的逻辑,并返回是否被解雇。