Bezdepbonusu7Программирование: статьи и ответы

Вопрос

C++/CLI странная проблема наследования

Автор вопроса: jpnavariniОтветов: 2

У меня есть 3 класса в моем проекте (назовем тогда A, B и C). A является абстрактным. Они имеют следующую взаимосвязь:
A - базовый класс B
B - базовый класс C.

И внутри C я объявляю переменную vector<A*> member_vector;. Это вызывает следующие проблемы:

C3699: '*': нельзя использовать эту косвенность для типа 'A'
C4368: невозможно определить 'member_vector' как элемент управляемого 'C': смешанные типы не поддерживаются.

Есть ли у вас какие-либо подсказки, почему эта ошибка происходит? Я думаю, что может быть проблема с использованием циклического класса, однако, как я могу ее преодолеть?

  • Вместо того, чтобы пытаться описать свой код, почему бы вам просто не опубликовать репрезентативный пример? И где использование циклического класса? Oliver Charlesworth 18.06.2011
  • Здесь определенно происходит что-то еще, так как это ошибка C++/CLI. Пожалуйста, отправьте код и детали вашего проекта. Adam Maras 18.06.2011
  • Вы упустили важную деталь - вы компилируете с помощью /clr, а ваши 3 класса являются управляемыми типами. ildjarn 18.06.2011
  • Вы используете C++/CLI? Почему упоминается управляемый объект? Jason 18.06.2011

inheritancec++-clivisual-c++

Ответы

Ответ 1 · рейтинг 6 · Puppy

Проблема в том, что вы пытаетесь использовать собственный тип std::vector внутри управляемого класса .NET Framework в C++/CLI. Если вы не знаете C++ и .NET, то C++/CLI не рекомендуется.

Ответ 2 · рейтинг 2 · bradenb

У вас есть две проблемы. Во-первых, вы используете собственный тип в своем классе, который является управляемым классом (C4368). Кроме того, вам нужно использовать "^" вместо "*", учитывая, что это управляемо (C3699).

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы