У меня есть быстрый вопрос для моей программы: как я могу назвать эту функцию шаблона Set
, а не int
? У меня есть класс здесь называется SetC++ Как я могу вызвать функцию шаблона с классом шаблона?
#include <iostream>
#include <vector>
using namespace std;
template<typename T>
class Set
{
public:
class Iterator;
void add(T v);
void remove(T v);
Iterator begin();
Iterator end();
private:
vector<T> data;
};
Вот мой каст:
К сожалению, основной не может быть функцией шаблона, так что я должен был сделать еще одну функцию addstuff
, основным звонки
template <class T>
Set<T> addstuff()
{
Set<T> a;
a.add(1);
a.add(2);
a.add(3);
a.add("a string");
return a;
}
void main()
{
addstuff<Set>(); //<< Error here. If I use addstuff<int>(), it would run but
//I can't add string to it. I am required to be able to add
//different data types to this vector
}
«... требуется для добавления разностных типов данных ...» - попробуйте 'boost :: any' или ограничьте его полиморфным типом с требуемым базовым классом. – Niall
Я не могу использовать сторонние библиотеки ... это, к сожалению, школьное задание. –
'boost :: any' не слишком сложно реализовать. Иначе посмотрите на союз, затем на типы, которые вам нужно поддерживать. – Niall