На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Ошибка при создания списка
    При создания списка компилятор выдаёт ошибку:
    error C2923: std::list: "id_cell" не является допустимым аргументом типа шаблон для параметра "_Ty"
    Вот код главного класса.
    ExpandedWrap disabled
      ....
      #pragma once
      #include "stdafx.h"
      #include "Clues.h"
      #include "id_cells.h"
      #include <list>
       
      #include <iostream>
      #include <string>
       
      using namespace std;
       
      ....
      public ref class Form1 : public System::Windows::Forms::Form
          {
          static Clues^ clue_window = gcnew Clues;
          static id_cells^ id_cell = gcnew id_cells(0,0,"abcd","abcd","abcd","abcd");
          static std::list<id_cell> idc = list<id_cells>();

    Код класса id_cells.h и id_cells.cpp
    ExpandedWrap disabled
      //id_cells.h
      #pragma once
       
      using namespace System;
       
      ref class id_cells
          {
              public: int X;
              public: int Y;
              String ^direction;
              String ^number;
              String ^word;
              String ^clue;
              
       
             public: id_cells(int x, int y, String ^d, String ^n, String ^w, String ^c)
              {
                  this->X = x;
                  this->Y = y;
                  this->direction = d;
                  this->number = n;
                  this->word = w;
                  this->clue = c;
              }
          };
      //id_cells.cpp
      #include "StdAfx.h"
      #include "id_cells.h"
    Сообщение отредактировано: Katerina1993 -
      Здесь лучше не пользоваться std::list. Попробуй сделать

      ExpandedWrap disabled
        using namespace System::Collections::Generic;
         
         
        ...
        static List<id_cell^>^ idc = gcnew List<id_cell^>();
        102 ошибки выдало (в конце появилось сообщение, что количество ошибок превышает 100 остановка компиляции), может быть ещё нужно подключить какой-нибудь файл с помощью include?

        Так как ошибок слишком много я добавила прикреплённый файл

        Прикреплённый файлПрикреплённый файлerror.txt (24,13 Кбайт, скачиваний: 139)
          Цитата Katerina1993 @
          Так как ошибок слишком много я добавила прикреплённый файл

          Покажи код
            Цитата Katerina1993 @
            static id_cells^ id_cell = gcnew id_cells(0,0,"abcd","abcd","abcd","abcd");
                static std::list<id_cell> idc = list<id_cells>();

            Ты передаешь в шаблонные параметры типа std::list, переменную, а он ожидает как минимум тип. Вот он тебе и говорит об этом.
            Может быть ты так хотела написать?

            ExpandedWrap disabled
              static std::list<id_cells> idc = list<id_cells>();

            ???
            Но тогда не понятно что такое list<id_cells>();? Если это тоже самое, что и с лева, то зачем дублировать это с права?
            Сообщение отредактировано: Wound -
              Цитата Wound @
              Ты передаешь в шаблонные параметры типа std::list, переменную, а он ожидает как минимум тип.

              Кстати да, надо List<id_cells^>^
                Цитата
                cells^ id_cell = gcnew id_cells(0,0,"abcd","abcd","abcd","abcd");
                static std::list<id_cell> idc = list<id_cells>();

                Ты передаешь в шаблонные параметры типа std::list, переменную, а он ожидает как минимум тип. Вот он тебе и говорит об этом.
                Может быть ты так хотела написать?

                CollapsedWrap disabledLine numbers off
                static std::list<id_cells> idc = list<id_cells>();

                ???
                Но тогда не понятно что такое list<id_cells>();? Если это тоже самое, что и с лева, то зачем дублировать это с права?


                id_cells - это класс.

                Цитата
                Так как ошибок слишком много я добавила прикреплённый файл

                Покажи код

                Судя потому, что меня спрашивают покажи код и то что не понятно, что такое id_cells, что не кто не читал мой первый пост, там я уже разместила код?

                Добавлено
                Вообщем у меня есть класс id_class
                Вызывается он
                ExpandedWrap disabled
                  static id_cells^ id_cell = gcnew id_cells(0,0,"abcd","abcd","abcd","abcd");

                Как этот класс поместить в коллекцию List? Это мне и нужно сделать?
                  Цитата Katerina1993 @
                  id_cells - это класс.

                  Я красным все выделил. Могу еще шрифт увеличить, чтоб виднее было :-? . Ты в шаблонные параметры передаешь переменную, а не класс. Тип std::list ожидает в шаблонных параметрах тип, а не переменную.


                  Цитата Katerina1993 @
                  Судя потому, что меня спрашивают покажи код и то что не понятно, что такое id_cells, что не кто не читал мой первый пост, там я уже разместила код?

                  Там половина класса размещено. У тебя просят весь код. Если это весь код который есть, то у меня для тебя очень плохие новости....
                    Как вообще в list можно записать вызванный класс?
                      Цитата Katerina1993 @
                      Как вообще в list можно записать вызванный класс?

                      ну вот тебе выше человек написал:

                      Цитата Олег М @
                      using namespace System::Collections::Generic;
                       
                       
                      ...
                      static List<id_cells^>^ idc = gcnew List<id_cells^>();

                      Потом где то ниже в коде, где он у тебя должен заполняться пишешь:

                      ExpandedWrap disabled
                        id_cells^ cellid = gcnew id_cells();
                        /*
                        заполняешь поля
                        */
                        idc.Add(cellid);

                      Ну примерно как то так. Возможно цикл организовать нужно.

                      Добавлено
                      Вот например тут пример простенький есть, его можно взять за основу: https://www.daniweb.com/programming/softwar...-a-generic-list
                        Странное, сейчас добавила строку снова.
                        ExpandedWrap disabled
                          static List<id_cells^>^ idc = gcnew List<id_cells^>();

                        Теперь всё откомпелировалось и показала мою форму, но я так и не поняла в чём до этого была проблема.
                          Цитата Katerina1993 @
                          Теперь всё откомпелировалось и показала мою форму, но я так и не поняла в чём до этого была проблема.

                          Вот в этом:

                          Цитата Wound @
                          static std::list<id_cell> idc = list<id_cells>();

                          И в логе ошибок это четко видно:
                          Цитата

                          error C2923: System::Collections::Generic::List: "id_cell" не является допустимым аргументом типа универсальный для параметра "T"
                          1> c:\documents and settings\мои документы\visual studio 2008\projects\proj5\proj5\Form1.h(41): см. объявление 'id_cell'
                          1>c:\documents and settings\мои документы\visual studio 2008\projects\proj5\proj5\Form1.h(42) : error C2955: System::Collections::Generic::List: для использования класса универсальный требуется список аргументов универсальный
                          1> c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll: см. объявление 'System::Collections::Generic::List'

                          id_cell - это не класс и не тип. Это переменная. А id_cells - тип.
                          Переменным и типам нужно давать осознанные имена, а не такие вот, чтоб потом не было путаницы.
                          Сообщение отредактировано: Wound -
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


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