Я новичок в программировании на C++ и борюсь с организацией моего проекта. У меня есть класс с именем StateManager, который имеет файл заголовка и файл cpp. cpp содержит все реализации.Где поставить класс интерфейса в C++
Если теперь я хочу, чтобы класс интерфейса:
class IStateManager
{
public:
virtual ~IStateManager() {}
virtual void SomeMethod {}
};
Я знаю, интерфейсы реально не существуют, как они это делают в C# или Java, но я хочу несколько классов наследовать от этого «интерфейса».
Имеет ли этот класс также заголовок и файл cpp? Или я могу просто поместить его в файл заголовка?
Интерфейс должен иметь только заголовок, поскольку он не имеет реализации. Он может входить в заголовок сам по себе или в другой более крупный файл заголовка. (здесь нет ограничений, таких как Java) –
@ebyrob: Эти методы не объявляются чистыми виртуальными. –
Компилятор C++ не компилирует заголовочные файлы. Единицы компиляции всегда являются CPP-файлами. Если ваш заголовок (потому что это _interface_) будет включен где-то cpp, вам не нужен пустой cpp для него. Тем не менее, если вы говорите об интерфейсах ... Я бы сделал эти методы чистыми (вместо пустой реализации). –