На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> try catch выдаёт ошибку с Exception
    Пытаюсь использовать try catch, но мне выдаёт ошибку
    Цитата

    error C3699: &: это косвенное обращение невозможно использовать для типа "System::Exception"

    ExpandedWrap disabled
      private: System::Void board_CellValueChanged(System::Object^  sender, System::Windows::Forms::DataGridViewCellEventArgs^  e) {
      try{
          board[e->ColumnIndex,e->RowIndex]->Value = board[e->ColumnIndex,e->RowIndex]->Value->ToString()->ToUpper();
      }
      catch(Exception& e){}
              
      }
      Цитата Katerina1993 @
      Пытаюсь использовать try catch, но мне выдаёт ошибку

      Вы бы для начала почитали, чем отличается C++/CLR(который к С++ не имеет отношения и является поделкой Microsoft для склеивания кода на native C++ и кода managed code .NET) от С++. И уж тогда бы начинали с правильного создания проекта. У вас 90% вопросов, которые вы тут задаете - отпали бы сами собой. Я так понял изучаете вы С++ по книжкам С++, но пишете почему то на С++ CRL. Вы тогда уж либо книжку возьмите по С++ CLR либо создавайте проект C++(без всяких CLI/CLR).
      Конкретно в вашем случае вам компилятор говорит что ссылочные типы С++ не применимы к объектам .NET.
      Другими словами вы ловите исключение типа System::Exception - которое является частью .NET, но пишете & в опереторе catch. Тут нужно либо так:

      ExpandedWrap disabled
        try{
            board[e->ColumnIndex,e->RowIndex]->Value = board[e->ColumnIndex,e->RowIndex]->Value->ToString()->ToUpper();
        }
        catch(Exception e){} //! <<<<<< Без &
         
        }

      Либо так:
      ExpandedWrap disabled
        try{
            board[e->ColumnIndex,e->RowIndex]->Value = board[e->ColumnIndex,e->RowIndex]->Value->ToString()->ToUpper();
        }
        catch(std::exception& e){}
         
        }


      Добавлено
      Вот на википедии про С++ CLI(про который вы тут вопросы задаете) -> https://ru.wikipedia.org/wiki/C%2B%2B/CLI
      А вот на той же самой википедии статья про С++ -> https://ru.wikipedia.org/wiki/C%2B%2B на котором вы якобы пытаетесь писать.
      Только получается у вас наоборот почему то.

      Если вы специально используете С++ CLI(например учительница вас заставила на нем писать), так значит и читать литературу нужно по этому языку, а не по С++.
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0253 ]   [ 16 queries used ]   [ Generated: 28.03.24, 10:19 GMT ]