Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.125.135] |
|
Сообщ.
#1
,
|
|
|
При создания списка компилятор выдаёт ошибку:
error C2923: std::list: "id_cell" не является допустимым аргументом типа шаблон для параметра "_Ty" Вот код главного класса. .... #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 //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" |
Сообщ.
#2
,
|
|
|
Здесь лучше не пользоваться std::list. Попробуй сделать
using namespace System::Collections::Generic; ... static List<id_cell^>^ idc = gcnew List<id_cell^>(); |
Сообщ.
#3
,
|
|
|
102 ошибки выдало (в конце появилось сообщение, что количество ошибок превышает 100 остановка компиляции), может быть ещё нужно подключить какой-нибудь файл с помощью include?
Так как ошибок слишком много я добавила прикреплённый файл Прикреплённый файлerror.txt (24,13 Кбайт, скачиваний: 139) |
Сообщ.
#4
,
|
|
|
Цитата Katerina1993 @ Так как ошибок слишком много я добавила прикреплённый файл Покажи код |
Сообщ.
#5
,
|
|
|
Цитата 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, переменную, а он ожидает как минимум тип. Вот он тебе и говорит об этом. Может быть ты так хотела написать? static std::list<id_cells> idc = list<id_cells>(); ??? Но тогда не понятно что такое list<id_cells>();? Если это тоже самое, что и с лева, то зачем дублировать это с права? |
Сообщ.
#6
,
|
|
|
Цитата Wound @ Ты передаешь в шаблонные параметры типа std::list, переменную, а он ожидает как минимум тип. Кстати да, надо List<id_cells^>^ |
Сообщ.
#7
,
|
|
|
Цитата 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 Вызывается он static id_cells^ id_cell = gcnew id_cells(0,0,"abcd","abcd","abcd","abcd"); Как этот класс поместить в коллекцию List? Это мне и нужно сделать? |
Сообщ.
#8
,
|
|
|
Цитата Katerina1993 @ id_cells - это класс. Я красным все выделил. Могу еще шрифт увеличить, чтоб виднее было . Ты в шаблонные параметры передаешь переменную, а не класс. Тип std::list ожидает в шаблонных параметрах тип, а не переменную. Цитата Katerina1993 @ Судя потому, что меня спрашивают покажи код и то что не понятно, что такое id_cells, что не кто не читал мой первый пост, там я уже разместила код? Там половина класса размещено. У тебя просят весь код. Если это весь код который есть, то у меня для тебя очень плохие новости.... |
Сообщ.
#9
,
|
|
|
Как вообще в list можно записать вызванный класс?
|
Сообщ.
#10
,
|
|
|
Цитата Katerina1993 @ Как вообще в list можно записать вызванный класс? ну вот тебе выше человек написал: Цитата Олег М @ using namespace System::Collections::Generic; ... static List<id_cells^>^ idc = gcnew List<id_cells^>(); Потом где то ниже в коде, где он у тебя должен заполняться пишешь: id_cells^ cellid = gcnew id_cells(); /* заполняешь поля */ idc.Add(cellid); Ну примерно как то так. Возможно цикл организовать нужно. Добавлено Вот например тут пример простенький есть, его можно взять за основу: https://www.daniweb.com/programming/softwar...-a-generic-list |
Сообщ.
#11
,
|
|
|
Странное, сейчас добавила строку снова.
static List<id_cells^>^ idc = gcnew List<id_cells^>(); Теперь всё откомпелировалось и показала мою форму, но я так и не поняла в чём до этого была проблема. |
Сообщ.
#12
,
|
|
|
Цитата 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 - тип. Переменным и типам нужно давать осознанные имена, а не такие вот, чтоб потом не было путаницы. |