我正在尝试将此ECS添加到我的代码中。尝试编译时出现以下错误:
/ usr / bin / ld:CMakeFiles / Roguelike.dir / Game.cpp.o:在函数'ecs :: generateComponentType()'中: /home/luc/programming/cpp/RogueLikeCPP/ecs/Components/Component.h:17:“ ecs :: generateComponentType()”的多个定义; CMakeFiles / Roguelike.dir / Engine.cpp.o:/home/luc/programming/cpp/RogueLikeCPP/ecs/Components/Component.h:17:首先在此处定义
这是我的github repo。
#pragma once
#include <cstddef>
namespace ecs {
//
//Generic Component. A automatic Type ID is generated fdor each.
//
template <typename T>
class Component {
public:
static const std::size_t type;
};
std::size_t generateComponentType() {
static auto counter = std::size_t(0);
return counter++;
}
template <typename T>
const std::size_t Component<T>::type = generateComponentType();
} // namespace ecs
奇怪的是,如果我克隆他的仓库,一切都可以编译。
我正在使用cc版本9.1的Linux。