Как заставить класс, который использует шаблоны, иметь дело с int и строкой? - PullRequest
0 голосов
/ 15 сентября 2011

Я довольно новичок в шаблонах в C ++, и я пытался создать массив списков, который будет содержать как число, так и имя, используя шаблоны.Я использую существующий пример кода, который хранит число, и я пытаюсь адаптировать его, чтобы добавить строку.

Вот пример кода: http://pastebin.com/4sZ6PxcQ

Я попытался добавить вторую переменную с типом данных T и добавил ее во все те же места, где была переменная items, но она не работалапотому что это были два разных типа данных.Любые предложения для этого?У меня были некоторые другие идеи, но я совершенно новый, используя шаблоны, поэтому я не уверен, что они будут работать, как я их визуализирую.

Мне нужно, чтобы и номер, и имя сохранялись в одном массиве.Все с использованием шаблонов.

Ответы [ 2 ]

0 голосов
/ 15 сентября 2011

Не проверял ваш код, но если вам нужен список, в котором каждый элемент состоит из целого и строки, создайте агрегат (например, struct), который содержит оба элемента, и создайте список такого агрегата. , В качестве альтернативы вы можете использовать std::pair< int, std:: string > в качестве элемента.

0 голосов
/ 15 сентября 2011

Просто сохраните обе записи в вашем последнем как pair или tuple.

#include <utility>
typedef std::pair<int, std::string> IntAndString;
ListArray<IntAndString> aList;

bool success;

aList.insert(0, std::make_pair(10, "Ten"), success);
aList.insert(1, std::make_pair(8, "Eight"), success);

IntAndString out;
aList.retrieve(1, out, success);

cout << out.first << " " << out.second << "\n";

Это класс ArrayList, который вы написали сами? Если это не домашнее задание, я бы предложил использовать структуру данных из STL, например std::list или std::vector, для ваших нужд. Сама реализация ArrayList немного неуклюжа (отправка возвращаемого результата по ссылке?)

Чтобы это работало с вашей конкретной реализацией, вам понадобится соответствующий «оператор вставки потока» operator << для указанного выше типа IntAndString для использования в функции ArrayList::print.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...