Nano Hash - криптовалюты, майнинг, программирование

Оператор перекрестного приведения типов в C++

У меня есть два класса A и B, и мой код C++ выглядит следующим образом:

class A
{
int k;
public:
    //Some functions
    operator B()
    {
        B alpha;
        alpha.x=k;
        alpha.y=0;
        return alpha;
    }
};

class B
{
int x,y;
public:
    //Some functions
    operator A()
    {
        A play;
        play.k=x;
        return play;
    }
};

Однако при выполнении этого я столкнулся с проблемой (я написал правильный main). Он показывает сообщение об ошибке: Ожидаемый спецификатор типа перед B

Я думал, что проблема связана с размещением класса A перед B. Однако, когда я изменил это, т.е. поместил класс B перед A, появилось сообщение об ошибке того же типа: Ожидаемый спецификатор типа перед A

Как мне решить эту проблему (я имею в виду, пожалуйста, предложите изменения в коде, чтобы он работал)? Мне нужно использовать литье крестового типа в своей работе.

(Я пробовал это с двумя компиляторами, Code::Blocks (13.12) и MinGW (w64). Но в обоих случаях отображается одно и то же сообщение)


  • ищу оригинальный вопрос об этом, который уже отвечает и объясняет это... 11.04.2015
  • Никогда не делал ничего подобного, но когда ваш компилятор получает метод B в классе A, он не знает, что делать. Используйте предварительные объявления для своих классов. 11.04.2015
  • Я предложил, как заставить его работать. Цитируя мой другой ответ: В общем, если вы используете последовательность: (*) Вперед объявить все типы классов (*) Определить все типы классов (*) Тела членов класса, все будет хорошо. 11.04.2015
  • Я попробовал упреждающее объявление, но само упреждающее объявление выдает следующее сообщение об ошибке: Повторное объявление класса B 11.04.2015

Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


© 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование