Виртуальное наследование

240
09 апреля 2017, 03:53

VS2015. Код упростил.

Обычное ромбовидное наследование:

class A
{
public:
  void f() {};
}
class B : virtual public A
{
}
class C : virtual public A
{
}
class D : public B, public C
{
}

Такой код:

B* b = new B();
b->f();

Приводит к следующему исключению:

Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.

Прав ли я, что это из-за ромбовидного наследования и как правильно вызвать функцию f()?

Answer 1

Прошу прощения проблема была в недособранных dll.

READ ALSO
Шаблонный класс [дубликат]

Шаблонный класс [дубликат]

На данный вопрос уже ответили:

261
Почему программа выдает ошибку на Q_OBJECT в классе, наследованный от QMainWindow?

Почему программа выдает ошибку на Q_OBJECT в классе, наследованный от QMainWindow?

Всем здравствуйтеЯ недавно начал учить фреймворк Qt

250
Output and input [требует правки]

Output and input [требует правки]

Не могу понять зачем нужен output и input и как его использовать

317
Постфиксное арифметическое выражение [требует правки]

Постфиксное арифметическое выражение [требует правки]

Нужно написать подпрограмму для вычисления постфиксных выражений, например:

249