Здравствуйте, Павел Кузнецов, Вы писали:
ПК>Перфилов,
>> 1. Прописан ли в стандарте механизм реализации вызова виртуальных функций (в том числе и при множественном наследовании)?
ПК>Нет (*).
>> 2. Прописано ли в стандарте размещение указателя на таблицу виртуальных функций (в начале объекта, в конце, или еще где-нибудь)?
ПК>Нет (*).
Я себе вот какую проблему придумал по этому поводу.
Имеем две среды разработки под винду: A и B.
А размецает указатель на таблицу в начале объекта, а B — в конце.
Допустим в среде A я написал dll-ку. Вот h, который поставляется с ней:
// У Foo есть наследники, но пользователь dll о них не знает.
class Foo
{
friend Foo* CreateFoo(int id);
private:
void* pData;
protected:
Foo();
public:
virtual ~Foo();
virtual void SomeFunc();
};
Foo* CreateFoo(int id);
Теперь в среде B пытаюсь исп-ть эту dll-ку:
Foo* pFoo = CreateFoo(7);
pFoo->SomeFunc(); // Вот тут по идее должен быть глюк.