我一直收到错误:undefined reference to 'Company::budget'
。
设置我的方法是为了获取公司(任何已创建的)预算的价值并从中减去员工的工资。我一直遇到这个问题。尝试了两个指针,让我们说“正常呼叫”。好的,有代码片段:(其余部分有效)
company.h
#include <iostream>
#include <cstdlib>
#include <list>
#include <vector>
#include "employee.h"
using namespace std;
class Company
{
public:
Company* comp;
void hire(Employee& emp, float putSalary);
void fire(Employee& emp);
void endOfMonth(Company& comp);
Company(float);
// static float moneyamount;
private:
static float budget;
vector <Employee>* Employees;
};
company.cpp
void Company::endOfMonth(Company& comp)
{
for (iterat=0; iterat < Employees->size() ; iterat++)
{
cout << (*Employees)[iterat].fullName << endl;
cout << (*Employees)[iterat].getSalary() << endl;
comp.budget = comp.budget - (*Employees)[iterat].getSalary();
}
}
答案 0 :(得分:1)
您缺少静态类数据成员的定义。将以下行添加到company.cpp文件中:
float Company::budget;
答案 1 :(得分:1)
静态类成员变量对于类的所有实例都是静态的。因此,如果您有一个类的两个实例,则共享静态变量。此外,即使存在 no 类的实例,这些变量也是有效的。因此,静态成员函数可以使用静态成员变量。这就是为什么他们必须在目标文件中的类之外定义的地方。
你定义它并在你.cpp文件顶层的内存中为它保留必要的空间:
float Company::budget;