最佳答案
我有一个类 Dimension
,我定义了它(像我所有的类一样)在一个维数.h 文件中:
class Dimension
{
public:
constexpr Dimension() noexcept;
constexpr Dimension(int w, int h) noexcept;
int width;
int height;
};
我认为我可以像在我所有的类中一样,将定义放在一个单独的次元.cpp 中:
#include "Dimension.h"
constexpr Dimension::Dimension() noexcept : width(0), height(0) {}
constexpr Dimension::Dimension(int w, int h) noexcept : width(w), height(h) {}
但是当我尝试使用这个类时,编译器告诉我:
警告: 使用内联函数‘ constexpr Dimension::Dimension()
’但从未定义
同时链接:
对“ pong::graphics::Dimension::Dimension()
”的未定义引用
(与其他构造函数相同)
如果我像这样在头部定义类:
class Dimension
{
public:
constexpr Dimension() noexcept : width(0), height(0) {}
constexpr Dimension(int w, int h) noexcept : width(w), height(h) {}
int width;
int height;
};
省略.cpp 文件,一切正常。
我使用的是 GCC 4.9.2。为什么单独的定义不起作用?