Попытка исправить ошибку, которая не позволяет мне начать программировать остальную часть - PullRequest
0 голосов
/ 04 октября 2018

Я получаю сообщение об ошибке в этом проекте с классами, над которыми я работаю.Ошибка:

[Ошибка] недопустимое использование имени шаблона 'SimpleListContainer' без списка аргументов

//Application.cpp
#include <iostream>
#include "SimpleListContainer.cpp"
 using namespace std;
 int main()
   {
     SimpleListContainer obj1;
   }

Это другой файл в его нынешнем виде

    //#pragma once

#include <iostream>

using namespace std;

template <typename T>
class SimpleListContainer {

private:
    int size;
    const static int capacity = 5;
    T data[capacity];

public:
    SimpleListContainer();//which will add an item of type T to our array and return true, or return false if array already full
//  bool insert(T);//which will return true / false depending on if value T is present in array
//  bool search(T);//which will return the number of items currently stored(different from capacity which is fixed)
    int length();//which returns true if list is empty(size 0) or else false
    bool empty();//which prints all the data stored, line by line for each element in the array
    void print();//which clears the list by resetting size to 0
    void clear();//which deletes all instances of T found in the list and compresses the list via a simple algorithm
//  void remove(T);

};

SimpleListContainer::SimpleListContainer()
{
    size = 0;
}

Мне просто нужно знать, что я делаю неправильно.Я впервые использую Template в программе, поэтому я его совсем не понимаю, и обнаруженные мной онлайн-источники не устранили проблему, с которой я столкнулся.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

ошибка в том, как вы отдельно определяете функции класса шаблона.вместо

SimpleListContainer::SimpleListContainer()
{

нужно написать:

template<typename T>
SimpleListContainer<T>::SimpleListContainer()
{
0 голосов
/ 04 октября 2018

Мне просто нужно знать, что я делаю неправильно.

Вы не передаете параметр типа при создании экземпляра шаблона класса.

Шаблон класса, подобныйИтак:

template<typename T>
class MyTemplate { public: T t; };

Необходимо заполнить T, когда он используется:

int main () {
    MyTemplate<int> o { 42 };
    std::cout << o.t;
}

Вы должны вернуться к своей книге по C ++ и перечитать главу по шаблонам.

...