Bonjour à tous,

Je fais face à un problème d'utilisation de template :

TEST_TEMPLATE.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
#include <iostream>
using namespace std;
 
#include "Template.h"
 
class ImplTemplate:public Template<int>
{
public:
 
	ImplTemplate(int i){setlu(i)};
};
 
int main() {
	cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
	ImplTemplate cImplTemplate(1);
	return 0;
}
Template.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
template <typename T> class Template
{
public:
	Template(int i)
	{
		li=i;
	};
	void setlu(int i)
	{
		lu=i;
	}
 
private :
	int li;
	int lu;
};
Lors de la compilation de TEST_TEMPLATE.cpp, j'ai l'erreur suivante :
../src/TEST_TEMPLATE.cpp: In constructor ImplTemplate::ImplTemplate(int):
../src/TEST_TEMPLATE.cpp:18: error: no matching function for call to Template<int>::Template()
../src/Template.h:18: note: candidates are: Template<T>::Template(int) [with T = int]
../src/Template.h:12: note: Template<int>::Template(const Template<int>&)
../src/TEST_TEMPLATE.cpp:18: error: expected `;' before } token
make: *** [src/TEST_TEMPLATE.o] Error 1
Je ne comprends pas pourquoi le constructeur vide est requis ...

Merci d'avance pour votre aide