繁体   English   中英

C ++-对'Class :: variable'的未定义引用

[英]C++ - undefined reference to 'Class::variable'

我不断收到错误消息: 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();
    }    
}

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

float Company::budget;

静态类成员变量在类的所有实例上都是静态的。 因此,如果您有一个类的两个实例,则它们共享静态变量。 同样,即使没有该类的实例,这些变量也有效。 因此,静态成员函数可以使用静态成员变量。 这就是为什么它们必须在目标文件的类外部定义的原因。

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

float Company::budget;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM