2017-02-24 62 views
-1

因此,我在我的头文件中放了一个while循环,我想将它连接到我的main.cpp,但是然后我的main.cpp不会播放它,除非它在我的头文件中声明。所以我想知道是否有必要在标题中的while循环?该任务是创建一个程序,用于计算销售额下的用户工资。在标题或主文件中循环

这是我的头文件:

class Salary 
{ 
public: 
Salary(){}; 
    Salary(double employeeSales, double employeeSalary) 
    :sales{employeeSales},salary(employeeSalary) 
    { 
     while(employeeSales != -1) 
     { 
      salary = 200 + (.09 * sales); 
     } 
    } 
void setSales(double employeeSales) 
{ 
    sales = employeeSales; 
} 
void setSalary(double employeeSalary) 
{ 
    salary = employeeSalary; 
} 

double getSales() const{return sales;} 
double getSalary() const{return salary;} 
private: 
    double sales; 
    double salary; 
}; 

这是我的main.cpp

#include <iostream> 
#include <iomanip> 
#include "Salary.h" 

using namespace std; 
int main() 
{ 
    Salary mySalary; 
    double employeeSales; 
    double employeeSalary; 
    cout << fixed << setprecision(2); 
    cout << "Enter sales in dollars(-1 to quit): "; 
    cin >> employeeSales; 
    mySalary.setSales(employeeSales); 

    while(true) 
    { 
     employeeSalary = 200 + (.09 * employeeSales); 
     mySalary.setSalary(employeeSalary); 
     cout << "Salary is: $" << mySalary.getSalary(); 
     cout << "Enter sales in dollars(-1 to quit): "; 
     cin >> employeeSales; 
     mySalary.setSales(employeeSales); 
    } 

} 

然而,在主while循环不会工作,除非我把一段时间(employeeSales = -1 )

+1

“不行”意味着什么? – tadman

+0

你的第二个构造函数从不使用。因此,添加'while(employeeSales!= -1)'不可能阻止任何失败。 – GigaRohan

+0

使用调试程序遍历代码,您将看到为什么您的循环永远不会执行。 –

回答

0

而不是让你的构造函数处理垃圾数据(-1作为参数),只需在main中的while循环中创建一个if语句,如果用户输入-1,则会中断。

while(true) 
{ 
    employeeSalary = 200 + (.09 * employeeSales); 
    mySalary.setSalary(employeeSalary); 
    cout << "Salary is: $" << mySalary.getSalary(); 
    cout << "Enter sales in dollars(-1 to quit): "; 
    cin >> employeeSales; 
    if(employeeSales == -1) 
    { 
     cout << "Stopping program!" << endl; 
     break; // exits the while loop 
    } 
    mySalary.setSales(employeeSales); 
} 

这样做可以让您的薪酬构造函数中的while循环是不必要的,并且希望能够解决您的问题。

+0

。不过,我的问题是标题中的while循环做了什么?它甚至是必要的,因为该程序仍然可以运行而没有它。 – xx123

+0

@ xx123我很确定标题中的while循环不应该在那里。您可以在没有条件循环的情况下分配工资变量,因为使用上面的解决方案,您可以检查主数据库中的垃圾数据。 –