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.