У меня есть класс Dimension
, который я определил (как и все мои классы) в файле Dimension.h:
class Dimension
{
public:
constexpr Dimension() noexcept;
constexpr Dimension(int w, int h) noexcept;
int width;
int height;
};
Я думал, что мог, как и во всех моих классах, поставить определение в отдельный Dimension.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()
' используется, но не определена
и при связывании:
undefined ссылка на '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. Почему отдельное определение не работает?