У меня нет большого опыта работы с шаблонами, но я пытаюсь учиться на ходу, так что кто-то может сказать мне, что мне делать, чтобы сделать эту работу, потому что я видел множество примеров использования имен типов и явного создания экземпляра и явной специализации, но они включают только основные типы, такие как int, char, ... Так что, пожалуйста, помогите, потому что я не понимаю, что делать.C++ Template Class с классом Member
Container.h
#ifndef CONTAINER_H
#define CONTAINER_H
template <typename E>
class Container
{
private:
E element;
public:
Container(E pElement);
virtual ~Container();
};
#endif // CONTAINER_H
Container.cpp
#include "Container.h"
#include "Piece.h"
template class Container<Piece>;
template <typename E>
Container<E>::Container(E pElement) //Error Here;
{
element=pElement;
}
Piece.h
#ifndef PIECE_H
#define PIECE_H
#include <iostream>
#include <string>
using namespace std;
class Piece
{
private:
int x;
int y;
string z;
public:
Piece(int pX,int pY, string pZ);
virtual ~Piece();
};
#endif // PIECE_H
Piece.cpp
#include "Piece.h"
Piece::Piece(int pX, int pY, string pZ){
x=pX;
y=pY;
z=pZ;
}
И ошибка я получаю это:
src\Container.cpp|7|error: no matching function for call to 'Piece::Piece()'|
src\Container.cpp|7|note: candidates are:|
src\Piece.cpp|3|note: Piece::Piece(int, int, std::string)|
src\Piece.cpp|3|note: candidate expects 3 arguments, 0 provided|
include\Piece.h|8|note: Piece::Piece(const Piece&)|
include\Piece.h|8|note: Piece::Piece(const Piece&)|
И я не знаю, что я должен там делать, чтобы заставить вещи работать. Пожалуйста помоги.
Если вы собираетесь использовать его вообще, не ставьте 'use namespace std;' в файл заголовка. –
добавить конструктор по умолчанию Piece, (добавить новый конструктор или добавить значения по умолчанию для переменных в существующие). Также похоже, что вы забыли о реализации desctructor. – jonezq
Поскольку @jonezq утверждает, что вам нужно добавить конструктор по умолчанию, см. [Что все функции-члены, созданные компилятором для класса? Это происходит все время?] (Http://stackoverflow.com/questions/3734247/what-are-all-the-member-functions-created-by-compiler-for-a-class-does-that-hap). –