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

Тип параметра Void вызывает ошибку отсутствия типа

Вот прототип:

void RecvProxy_ToggleSights( const CRecvProxyData* pData, void* pStruct, void* pOut );

А потом сама функция:

void RecvProxy_ToggleSights( const CRecvProxyData* pData, void* pStruct, void* pOut ){

CBaseCombatWeapon *pWeapon = (CBaseCombatWeapon*)pStruct;
if( pData->m_Value.m_Int )
    pWeapon->EnableIronsights();
else
    pWeapon->DisableIronsights();}

И затем сообщение об ошибке, которое этот код, как прототип, так и определение, генерирует:

Ошибка 19 ошибка C4430: отсутствует спецификатор типа - предполагается int. Примечание: C ++ не поддерживает default-int f: \ Mods \ CI Testbed \ src \ game \ shared \ basecombatweapon_shared.cpp 47

Как я могу исправить эту ошибку?

10.01.2012

  • Файл basecombatweapon_shared.cpp использует некоторые типы, которые не определены. Вероятно, это потому, что у вас #include зависимости испорчены (т.е. отсутствуют некоторые или некоторые в неправильном порядке). 10.01.2012
  • Приведенный код в порядке (и void * вполне допустим). Вы уверены, что это не другая функция, а макрос добавляет строки в ваш код? Также посмотрите вокруг, чтобы убедиться, что все функции имеют возвращаемое значение. 10.01.2012
  • Какая из данных строк является строкой 47? Возможно ли, что вы неправильно # включили один из используемых здесь типов? 10.01.2012
  • @pragnar См. размещенную ниже ссылку pastebin для полного файла .cpp, из которого взяты приведенные выше фрагменты. Прототипом является строка 47. Функция находится намного дальше, на строке 2594. 10.01.2012

Ответы:


1

Определен ли тип CRecvProxyData? В остальном ваш код верен (при условии, что все определяемые пользователем типы определены правильно), хотя я предлагаю вам разместить открывающие и закрывающие фигурные скобки для определения функции в их собственных строках.

Кроме того, у меня есть проблема с void *: это немного похоже на пережиток C, вы должны стремиться удалить его из исходного кода там, где это необходимо. Могли бы вы вместо этого использовать полиморфизм или шаблоны?

Скорее всего, вы пропустили #include или сделали ошибку в вашей защите включения. Если бы вы могли опубликовать содержимое файла, в котором определено «CRecvProxyData», а также код, окружающий то, что вы опубликовали, это было бы большим подспорьем. В остальном я могу только догадываться :).

10.01.2012
  • Здесь определяется CRecvProxyData: // This is passed into RecvProxy functions. class CRecvProxyData { public: const RecvProp *m_pRecvProp; // The property it's receiving. DVariant m_Value; // The value given to you to store. int m_iElement; // Which array element you're getting. int m_ObjectID; // The object being referred to. }; Я также опубликую ссылку pastbin на сущность файла cpp, из которого взят исходный код. 10.01.2012
  • Похоже, что это определение (CRecvProxyData исходит из dt_recv.h, однако этот заголовок не включен в ваш источник. 10.01.2012
  • Извините, что мне потребовалось так много времени, чтобы вернуться к этому, я думаю, что DRH верен: определение CRecvProxyData, вероятно, существует в файле заголовка, который не включен в исходный файл, который вы нам показали, и как таковой вызывает ошибку. Честно говоря, это единственная возможная причина, которую я вижу. 10.01.2012
  • @DRH Вау, это на самом деле исправило. Есть и другие ошибки, но они того же типа, что и эта, поэтому знаю, что я знаю, как их исправить. Спасибо! Я полтора года подряд пытался это понять. 10.01.2012
  • Новые материалы

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

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

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

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

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

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

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