C++ - szablony - undefined reference to


(Kojot) #1

Napotkałem pewien problem ze skompilowaniem programu napisanego w języku C++ wykorzystującego szablony. Kompilowałem w MinGW i Cygwinie.

Okroiłem ten program do kilku linijek tak, żeby pokazać w którym miejscu pojawia się błąd.

Plik main.cpp wygląda tak:

#include 

#include 

#include "graf.h"


using namespace std;


int main() {

    graf g;

    wczytaj (g);


	return 0;

}

Plik graf.h tak:

#include 

#include 


using namespace std;


template struct graf {

	vector vvalues;

	vector evalues;

};


template 

void wczytaj (graf &);

A plik graf.cpp tak:

#include "graf.h"


using namespace std;


template 

void wczytaj (graf &g)

{

V tempcity;

E temproad;

}

Podczas kompilacji wyrzucany jest błąd:

Gdy umieszcze wszystko w jednym pliku to kompilacja przebiega pomyślnie. Macie jakieś pomysły na rozwiązanie problemu? Dodam jeszcze, że kiedy wpiszę w plikach graf.h i graf.cpp na sztywno deklaracje

graf &g

zamiast

graf &g

to program się kompiluje.


(Sawyer47) #2

Zdefiniuj ciało funkcji w graf.h.


(Kojot) #3

Funkcji podobnych do tej, korzystających z szablonów mam kilkanaście i chciałem, żeby w graf.h były same deklaracje, a definicje w osobnym pliku graf.cpp. Jeśli nie ma innego rozwiązania to zrobię tak, jak napisałeś.


(Sawyer47) #4

Poczytaj to: http://osilek.mimuw.edu.pl/index.php?ti ... Szablony_I