Здравствуйте, я создал шаблон
Ниже находится заголовочный файл:
#pragma once
#include <iostream>
using namespace std;
template <class T>
class Airplane {
private:
T model;
int counter;
public:
Airplane(T model);
};
.cpp файл:
#include "pch.h"
#include "Airplane.h"
#include <string>
template <class T>
Airplane<T>::Airplane(T model) {
if (&model != NULL)
this->model = model;
this->counter = 1;
}
Затем был создан шаблон набора, который может принимать любой тип данных или мой созданный шаблон Самолет, но набор должен содержать уникальные объекты.
установить заголовочный файл:
#pragma once
#include <vector>
#include <iostream>
using namespace std;
template <class T>
class set {
private:
vector <T> setvector;
public:
set();
void insert(T obj);
};
установить .cpp файл:
#include "pch.h"
#include "set.h"
#include <iterator>
template <class T>
set<T>::set() {
class vector<T>::iterator vi = this->setvector.begin();
}
template <class T>
void set<T>::insert(T obj) {
if (this->setvector.empty()) {
this->setvector.push_back(obj);
}
else {
class vector<T>::iterator vi = this->setvector.begin();
bool flag = false;
while (vi != this->setvector.end()) {
if (*vi == obj) {
flag = true;
break;
}
vi++;
}
if (flag == false)
this->setvector.push_back(obj);
}
в основном методе, когда я пытался использовать набор с помощью int или doulbe, он работает отлично, однако, когда я пытаюсь создать новый набор с помощью моего шаблона "Самолет", VS выдает ошибку
C3203 'Airplane': unspecialized class template can't be used as a template argument for template parameter 'T', expected a real type.
Я пытался создать специализацию для моего шаблона, но C ++ не примет его, так как кажется, что это шаблон. Я пытался использовать template <template <class> class T>
в заданном шаблоне, но все равно не работал.