Я относительно новичок в C++, и у меня есть время, когда моя основная программа создает экземпляр класса. Я привык к java, поэтому не уверен, смешиваю ли я два языка, когда я пытаюсь это сделать, и это моя проблема, или, может быть, я просто не понимаю концепцию правильно.Реализация интерфейса класса шаблона
Объект моей программы: Цель этой программы - создать класс шаблона из интерфейса, который будет создавать отсортированный массив, который вы можете добавлять и удалять из него, сохраняя при этом его сортировку.
Примечание: Пожалуйста, помогите мне на самом деле понять этот процесс, чтобы просто рассказать мне точный код, чтобы использовать, потому что я действительно хочу, чтобы понять, что я делаю неправильно в следующий раз.
Шаг 1: Я создал свой упорядоченный интерфейс:
sortedInterface.h
#ifndef _SORTED_INTERFACE
#define _SORTED_INTERFACE
#include <vector>
using namespace std;
template<class ListItemType>
class sortedInterface
{
public:
virtual bool sortedIsEmpty();
virtual int sortedGetLength();
virtual bool sortedInsert(ListItemType newItem);
virtual bool sortedRemove(ListItemType anItem);
virtual bool sortedRetrieve(int index, ListItemType dataItem);
virtual int locatePosition(ListItemType anItem);
}; // end SortedInterface
#endif
я использовал интерфейс для создания файла sorted.h:
sorted.h
#include "sortedInterface.h"
#include <iostream>
#ifndef SORTED_H
#define SORTED_H
using namespace std;
template<class ListItemType>
class sorted
{
public:
sorted();
sorted(int i);
bool sortedIsEmpty();
int sortedGetLength();
bool sortedInsert(ListItemType newItem);
bool sortedRemove(ListItemType anItem);
bool sortedRetrieve(int index, ListItemType dataItem);
int locatePosition(ListItemType anItem);
protected:
private:
const int DEFAULT_BAG_SIZE = 10;
ListItemType items[];
int itemCount;
int maxItems;
};
#endif // SORTED_H
и, наконец, я создал sorted.cpp (I включены только конструктор теперь, как я даже не могу получить, что работа)
#include "sorted.h"
#include <iostream>
using namespace std;
template<class ListItemType>
sorted<ListItemType>::sorted()
{
itemCount = 0;
items[DEFAULT_BAG_SIZE];
maxItems = DEFAULT_BAG_SIZE;
}
Моя основная программа:
#include "sortedInterface.h"
#include "sorted.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
sorted<string> sorted1 = new sorted();
return 0;
};
Любая помощь приветствуется в объяснении, где моя логика терпит неудачу, и любые подсказки о том, как правильно выполнить мою задачу. Благодаря!
Какие ошибки вы ели? Из-за того, как работают шаблоны, обычно вам нужно также поместить определение шаблона в файл заголовка. – Chad
Создание виртуальных элементов для членов требует реализации. [Чистый виртуальный] (http://en.cppreference.com/book/intro/abstract_classes#Pure_virtual) - это то, что вы, вероятно, после. – Siege
Что касается терминологии, это «шаблон шаблона», а не «шаблонный класс». «Шаблон класса» не является классом, он является шаблоном для создания классов. – juanchopanza