Вопрос о С++:
позволяет сказать, что я хочу использовать абстрактный класс с несколькими методами в качестве интерфейса:
// this is AbstractBase.hpp
class AbstractBase
{
public:
virtual int foo() = 0;
virtual int bar() = 0;
// imagine several more pure virtual methods are here
};
Я хочу, чтобы подкласс реализовал все виртуальные методы, и я не хочу их реализовывать в заголовочном файле, но вместо этого в их файлах реализации.
Должен ли я снова объявлять все эти методы в объявлениях подкласса, как это? Я думаю, что должен быть способ избежать этого шага (из ObjC, Java)
// this is Concrete.hpp
class Concrete : public AbstractBase
{
public:
int foo();
int bar();
// need to copy paste all the method declarations here again...? why?
};
то, что я хотел бы сделать, это реализовать методы в файле реализации следующим образом:
// this is Concrete.cpp
#include "Concrete.hpp"
int Concrete::foo()
{
return 666;
}
// etc...
но не может понять, как без повторного объявления интерфейса в каждом подклассе.