找不到原因为什么不能编译

时间:2019-07-25 17:12:48

标签: c++ c++17

我正在尝试将此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。

0 个答案:

没有答案