G++:"Undefined Reference to"错误
G++: "Undefined Reference to" error
注意:我知道这里有很多类似的问题,但我都看了,但都没有用。
因此,我有一个简单的singleton GameManager类,它被拆分为和.h
和一个.cpp
文件。
GameManager.h
#ifndef _GM_H_
#define _GM_H_
#include <iostream>
/**
* Singleton GameManager class.
*
**/
class GameManager {
//Private Variables
private:
static GameManager* _instance;
int _gameObjects;
//Private Methods
private:
GameManager();
~GameManager();
//Public Methods and Functions
public:
static GameManager* instance()
{
if (!_instance)
_instance = new GameManager();
return _instance;
}
//Placeholders
void addObject();
int getObjects();
};
#endif
GameManager.cpp
#include "GameManager.h"
#include <iostream>
GameManager::GameManager()
{
_gameObjects = 0 ;
}
void GameManager::addObject()
{
_gameObjects += 1;
}
int GameManager::getObjects()
{
return _gameObjects;
}
main.cpp
#include "GameManager.h"
#include <iostream>
#include <string>
int main(int argc, char** argv)
{
GameManager::instance();
GameManager::instance()->addObject();
std::cout << GameManager::instance()->getObjects() << std::endl;
return 0;
}
当我尝试使用编译这个
g++ main.cpp GameManager.cpp
我得到错误
/tmp/cctNvscU.o: In function `GameManager::instance()':
main.cpp:(.text._ZN11GameManager8instanceEv[_ZN11GameManager8instanceEv]+0x9): undefined reference to `GameManager::_instance'
main.cpp:(.text._ZN11GameManager8instanceEv[_ZN11GameManager8instanceEv]+0x29): undefined reference to `GameManager::_instance'
main.cpp:(.text._ZN11GameManager8instanceEv[_ZN11GameManager8instanceEv]+0x2e): undefined reference to `GameManager::_instance'
collect2: error: ld returned 1 exit status
感谢您的帮助。提前谢谢。
static GameManager* _instance;
这声明了一个类型为GameManager*
的静态变量。现在它驻留在一个头文件中(本身不是编译的(,它只是一个声明:"确实存在一个名为GameManager*
类型的_instance
的全局变量"。
但分配给_instance
的空间在哪里?它是一个静态变量,所以它不附加到对象的特定实例,它必须位于最终二进制文件中的某个位置。
为了能够使用_instance
,您必须在翻译单元内为其提供静态空间。因此,您必须在源文件中定义变量(它是经过编译的,而不是像头一样(。
解决方案只是在.cpp中(可能是GameManager.cpp
(:
GameManager* GameManager::_instance = nullptr;
相关文章:
- "error: no matching function for call to"构造函数错误
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- 地图'Cannot convert from _Ty2 to T*'错误
- 如何修复 cpp 中的"undefined reference to"错误,当调用刚性车身树中的函数时,如 doKinematics、CreateKinematicCache
- 如何修复 C++ 中的"no matching fuction for call to:"错误
- 在VS代码中使用全局变量时出现"undefined reference to"错误
- C++'Undefined reference to'错误,尽管包含路径中的头文件中存在函数定义
- 为什么我的复制构造函数出现"undefined reference to"错误?
- 无法解决"Undefined reference to ..."错误
- 我收到"no mathing function for call to "错误。给我解决方案
- 几个"undefined reference to"错误
- g++ 的一个奇怪的'undefined reference to'错误
- "is not a member of"和"no matching function for call to"错误
- 将静态 C 库与C++代码链接时出现"undefined reference to"错误
- 头文件中的命名空间出现问题,"undefined reference to"错误?
- G++:"Undefined Reference to"错误
- C++ "undefined reference to"错误
- "Undefined reference to" 错误/静态成员变量 C++/Qt
- 编译器构造 - 当我编译C++代码时"undefined reference to"错误,但原始 makefile 代码编译
- 在C++中使用继承对象时"no matching function for call to"错误