Здравствуйте, VladEC, Вы писали:
VEC>Здравствуйте все!
VEC>NOTE: перефигачить архитектуру не предлагать
Как вариант -- выпрямить руки...
Если честно, то я не понял что тебе хотелось выразить. Если оставаться в стандартном С++ без сяких расширений разных, то таки определение виртуальной функции берётся из MDT, даже если виртуальный метод с подходящим прототипом есть в нескольких базах...
То есть твой код не соответствует стандарту С++ и юзает расширение gcc и может ещё чьё-то, а так же дыры в стандарте. Это к вопросу о прямизне рук.
Но, на самом деле даже не особо-то и важно, что там в стандарте написано. Ясно же, что ты юзаешь очень тонкое поведение компилятора. Не можешь ответить за ради чего?
То есть что конкретно ты хотел бы выразить-то?
По поводу не изменения архиитектуры. Что-то же менять всё равно понадобится.
IMHO, проще всего, поменять так. Переименовать все три виртуальные функции, и дополнить классы/интерфейсы NVI.
То есть будет примерно так:
class IReader
{
virtual int Read(void* buf, size_t& size) = 0;
int SetPosition(size_t pos) { return setReadPosition( pos ); }
virtual ~IReader() {}
protected:
virtual int setReadPosition(size_t pos) = 0;
}
class IWriter
{
virtual int Write(const void* buf, size_t& size) = 0;
int SetPosition(size_t pos) { return setWritePosition( pos ); }
virtual ~IWriter() {}
protected:
virtual int setWritePosition(size_t pos) = 0;
}
class Storage: public IReader, public IWriter
{
public:
int Read(void* buf, size_t& size);
int Write(const void* buf, size_t& size);
int SetPosition(size_t pos);
protected:
virtual int setReadPosition(size_t pos);
virtual int setWritePosition(size_t pos);
}
либо просто переименовать функции в райтере и ридере...

В общем, пока не объяснишь, что тебе на самом деле надо, либо кто-то это не протелепает, совета дельного тебе дать будет непросто
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском