C++ - 对"类::变量"的未定义引用
C++ - undefined reference to 'Class::variable'
我不断收到错误: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;
相关文章:
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 对 Scalar ::Scalar() 的未定义引用
- 对复制 CTOR 和 CTOR 的未定义引用
- 对显式实例化的模板函数的未定义引用
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 2个模板化类的非模板友元函数未定义引用错误
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- 获取对function_name的未定义引用
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 对结构方法的未定义引用
- 使用内联函数 c++ 的未定义引用
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 对 DLOPEN 的未定义引用
- QT C++中对全局变量的未定义引用
- 快速数学导致对"__pow_finite"的未定义引用
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用