timai wrote:
> Компилятор ругается — якобы pure virtual function was not defined.
> Не подскажете как это можно обойти? Или как-нибудь другие решения...
class CObject : public CBase, IObject
{
public:
using CBase::Release;
void Test (void) {}
};
--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Вопрос в следующем.
Хочеться сделать вот такое:
struct IObject
{
virtual void Release (void) PURE;
};
class CBase
{
public:
void Release (void) {}
};
class CObject : public CBase, IObject
{
public:
void Test (void) {}
};
void TestFunc (void)
{
CObject Obj;
Obj.Test ();
Obj.Release ();
}
Компилятор ругается — якобы pure virtual function was not defined.
Не подскажете как это можно обойти? Или как-нибудь другие решения...
Здравствуйте, timai, Вы писали:
T>Компилятор ругается — якобы pure virtual function was not defined.
T>Не подскажете как это можно обойти?
Например так:
struct CObject: CBase, IObject
{
void Rlease() { CBase::Release(); }
};
T>Или как-нибудь другие решения...
Если же CBase реализует какой то базовый интерфейс, например IUnknown, как в COM. Тогда можно сделать CBase шаблонным:
template<class Interface>
struct CBase: Interface
{
void Release() { /*...*/ }
};
Соответственно:
struct CObject: CBase<IObject> {};
Здравствуйте, timai, Вы писали:
T>Компилятор ругается — якобы pure virtual function was not defined.
T>Не подскажете как это можно обойти? Или как-нибудь другие решения...
http://www.gotw.ca/gotw/039.htm
Здравствуйте, Cyberax, Вы писали:
class CObject : public CBase, IObject
{
public:
using CBase::Release;
void Test (void) {}
};
Хм... то же самое. Компилятор все равно спотыкается...
Здравствуйте, sergey_shandar, Вы писали:
_>Например так:
_>_>struct CObject: CBase, IObject
_>{
_> void Rlease() { CBase::Release(); }
_>};
_>
Спасибо, заработало.