C++ не имеет встроенных концепций интерфейсов. Вы можете реализовать его, используя abstract classes, который содержит только pure virtual functions. Поскольку он допускает множественное наследование, вы можете наследовать этот класс для создания другого класса, который затем будет содержать этот интерфейс (я имею в виду, интерфейс объекта :-)).
образец пример будет что-то вроде этого -
class Interface
{
public:
Interface(){}
virtual ~Interface(){}
virtual void method1()=0; // "=0" part makes this method pure virtual, and
// also makes this class abstract.
virtual void method2()=0;
};
class Concrete : public Interface
{
private:
int myMember;
public:
Concrete(){}
~Concrete(){}
void method1();
void method2();
};
// Provide implementation for the first method
void Concrete::method1()
{
// Your implementation
}
// Provide implementation for the second method
void Concrete::method2()
{
// Your implementation
}
int main(void)
{
Interface *f = new Concrete();
f->method1();
f->method2();
delete f;
return 0;
}
В вашем примере есть _undefined behavior_, потому что интерфейс не имеет виртуального деструктора. –
@CharlesBailey: Извините, забыл упомянуть об этом. Спасибо, что поймали это! Теперь нормально? –
... хотя ваш пример также не должен компилироваться, потому что вы определяете Concrete :: method1 и Concrete :: method2, но это недействительные члены Concrete и you.instantiate Concrete, хотя он еще абстрактный. –