Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Множественное наследование. Пересечение имен.


Автор: Alexeis 23.7.2012, 15:18
Собственно САБЖ.

Код

class A //Интерфес А
{
public:
  virtual const wchar_t* Name() = 0;
...
};

class B //Интерфес В
{
public:
  virtual const wchar_t* Name() = 0;
...
};

class C : public A, public B
{
public:
//реализация методов А
virtual const wchar_t* Name(){};
...
//реализация методов В
virtual const wchar_t* Name() {}; //конфликт имен.
...
};


Вижуалка позволила мне реализовать оба метода следующим образом
Код

class C : public A, public B
{
public:
//реализация методов А
virtual const wchar_t* A::Name(){};
...
//реализация методов В
virtual const wchar_t* B::Name(){}; //конфликта имен нет.
...
};



Но решение оказалось непереносимым. Есть ли для данной задачи переносимое решение, без использования расширений компилятора?

Автор: Cheloveck 23.7.2012, 15:26
Создать класс D, который отнаследуется от класса A и переименует функцию. Класс C, соответственно, наследовать от B и D.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)