C++ - 对"类::变量"的未定义引用

C++ - undefined reference to 'Class::variable'

本文关键字:未定义 引用 变量 C++      更新时间:2023-10-16

我不断收到错误:undefined reference to 'Company::budget' .我的方法设置为取公司(任何创建的(预算的价值并从中减去员工的工资。我一直遇到这个问题。尝试了两个指针,让我们说"正常呼叫"。好的,有代码片段:(其余部分有效(

公司.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;   
};

公司.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();
    }    
}

缺少静态类数据成员的定义。将以下行添加到文件公司.cpp:

float Company::budget;

静态类成员变量对类的所有实例都是静态的。因此,如果你有一个类的两个实例,它们共享静态变量。此外,即使没有类的实例,这些变量也是有效的。因此,静态成员函数可以使用静态成员变量。这就是为什么它们必须在目标文件中的类之外的某个位置定义的原因。

您可以在文件的顶层定义它并在内存中为它保留必要的空间.cpp:

float Company::budget;