Принудительная установка виртуальных и не виртуальных базовых классов - PullRequest
0 голосов
/ 24 октября 2019

Если у меня есть такой код:

class A {
public:
    int data1;
}

class B {
public:
    virtual void test() {}
}

class C : public A, public B {
    int data2;
}

, и когда я сейчас создаю экземпляр C, его структура памяти выглядит примерно так:

B::vtable
A::data1
C::data2

, но то, что я на самом делехочу что-то вроде этого:

A::data1
B::vtable
C::data2

Есть ли какое-то ключевое слово для принудительного порядка наследования?

Используется ли VC ++ 15 для компиляции, и проблема в том, что я используюбольшая автоматически сгенерированная кодовая база, которая использует для всех классов указатели void * для «подделки» виртуальных таблиц ... теперь я использую эту кодовую базу и наследую ее, для этого экземпляра теперь требуется специальный порядок расположения памяти для правильной работы с другой структурой длянагрузить. И эта структура нуждается в данных А. на фронте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...