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

Как я могу перегрузить оператор []?

Как я могу перегрузить оператор [] в c ++. Я в основном хочу получить доступ к индексу массива One-D и вернуть его. Я пробовал это сделать, но, похоже, это не дало желаемого результата.

Square Square::operator [](const Square& temp)
{
   Square obj; //creates a Square class object.

  for(int i=0;i<dimension;i++)
    {
       *obj.board = temp.board[i];

    }
return obj;

}

  • Похоже, вы используете [] как оператор копирования, возвращающий новый объект. Вам нужно что-то, что получит индекс i и вернет this.board [i]. предполагая, что this.board существует. 26.11.2016
  • Скомпилируйте со всеми предупреждениями и информацией об отладке (g++ -Wall -g), затем используйте отладчик (gdb). Ошибка может быть где-то еще (также имеется temp, то есть индекс, а Square выглядит странно) 26.11.2016
  • Если Square содержит массив, к которому вы хотите получить доступ, то вам в основном нужен сквозной оператор, который действует как operator[] для обычных массивов. Это означает, что он должен принимать индекс, возвращать ссылку на фактический тип элемента массива и внутренне использовать operator[] массива. 26.11.2016

Ответы:


1

Убедитесь, что у вас есть массив сортировок в вашем Square классе, тогда ваша перегрузка индекса будет выглядеть примерно так

Square& Square::operator[] (const int index)
{
   // checks if index is >= to zero AND less than your array size
   assert(index >= 0 && index < yourArray.size());
   return yourArray[index];
}

Дополнительная информация о assert

PS: это работает в предположении, что вы создадите массив Square. В противном случае обновите подпись метода соответственно.

26.11.2016
  • Порекомендуйте быстрое объяснение того, что делает assert, и, возможно, ссылку на авторитетную страницу документации для получения более подробной информации. 26.11.2016
  • Новые материалы

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

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

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

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

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

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

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