Использование CLists в c -Не удалось понять

#c #mfc

#c #mfc

Вопрос:

Я искал пример программы для работы с CList. Но я не смог его найти.Я получил некоторые базовые определения о CLists (шаблонный класс, который ведет себя аналогично двусвязным спискам).. и используется для хранения совокупных данных..1-й аргумент хранится внутри списка..Я не мог видеть, какие элементы хранятся в списке и как его извлечь.

 RsData Data; //object of class RsData
RsEvent* Event;//pointer to class RsEvent
CList<Event*,Event*>  EventQueue;
Data.EventQueue.RemoveAll(); 
//removing the attributes and methods of the class RsEvent stored in the list.
  

Комментарии:

1. Откуда взялся этот класс CList? Возможно, вы могли бы привести пример, который компилируется?

2. в afxtempl.h … шаблон<ТИП класса, класс ARG_TYPE = const TYPEamp;> класс CList : public CObject { защищенный: struct CNode { CNode* pNext; CNode * pPrev; ТИП данных; }; stmts; };

3. Почему вы не рассматриваете std::list ? Это описано в книге Страустроупа «Язык программирования C » и в книгах по STL, это стандартно.

Ответ №1:

Итак, документ является CList в MSDN

И там есть ссылка на образец сбора: иллюстрирует классы коллекции MFC

Я не уверен, как этот документ не был найден, поэтому, возможно, ваш вопрос нуждается в уточнении.

Список предлагает переднюю / заднюю вставку и просмотр, а также методы для итерации.

 // Define myList.
CList<CString,CStringamp;> myList;

// Add an element to the front of the list.
myList.AddHead(CString("ABC"));

// Verify the element was added to the front of the list.
ASSERT(CString("ABC") == myList.GetHead());
  

Комментарии:

1. Привет, я сделал, как вы указали здесь ….#включить «stdafx.h» #включить «afxtempl.h» #включить <iostream> #определить _AFXDLL с использованием пространства имен std; int main() { CList<CString,CStringamp;> myList; myList.AddHead((CString(«ABC»))); ASSERT((CString («ABC») ==myList.GetHead() )); return 0; } вывод: получаю ошибку компилятора о том, что для сборки приложения MFC с /MD [d] (версия CRT dll) требуется версия MFC shared dll. Пожалуйста, #define _AFXDLL или не используйте /MD[d]…

2. Ваш недостаток знаний в настоящее время выходит за рамки моей помощи

3. @Beata — В сообщении говорится, что не так! Вы должны выбрать одинаковые версии MFC и CRT, либо обе как DLL, либо обе как статические библиотеки.

4. Я новичок в этом MFC, и я не мог понять, в чем ошибка. поэтому я включил #define _AFXDLL, как указано в ошибке.. Но снова я получил ту же ошибку .. извините, что беспокою вас обоих своими скудными знаниями. Я проверю, как выбрать те же версии MFC и CRT в качестве DLL..