Я хочу реализовать интерфейс внутри класса "Dog", но получаю следующую ошибку. Конечная цель состоит в том, чтобы использовать функцию, которая получает сопоставимый объект, чтобы он мог сравнивать фактический экземпляр объекта с тем, который я передаю по параметру, точно так же, как равен. Перегрузка оператора не является опцией, потому что я должен реализовать этот интерфейс.
Ошибка возникает при создании объекта с использованием ключевого слова «new».
"Ошибка 2, ошибка C2259:« Собака »: невозможно создать экземпляр абстрактного класса c: \ users \ fenix \ documents \ visual studio 2008 \ projects \ interface-test \ interface-test \ interface-test.cpp 8"
Вот код участвующих классов:
#pragma once
class IComp
{
public:
virtual bool f(const IComp& ic)=0; //pure virtual function
};
#include "IComp.h"
class Dog : public IComp
{
public:
Dog(void);
~Dog(void);
bool f(const Dog& d);
};
#include "StdAfx.h"
#include "Dog.h"
Dog::Dog(void)
{
}
Dog::~Dog(void)
{
}
bool Dog::f(const Dog &d)
{
return true;
}
#include "stdafx.h"
#include <iostream>
#include "Dog.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
Dog *d = new Dog; //--------------ERROR HERE**
system("pause");
return 0;
}