[Megoldva:] Sablon osztály furcsaságai

 ( pelz | 2008. szeptember 17., szerda - 19:12 )

Sziasztok!

Ezt a példa-programot írtam:

main.cpp :

#include "tempclass.h"
#include "nontempclass.h"

int main() {
    TempClass  tc;
    tc.printSomething(34);

    NonTempClass ntc;
    ntc.printSomething(34);

    return 0;
}

tempclass.h :

#ifndef TEMPCLASS_H
#define TEMPCLASS_H

template  class TempClass {

public:
    TempClass();
    void printSomething(T input);
};

#endif

tempclass.cpp :

#include 
#include "tempclass.h"

template  TempClass::TempClass() {
}

template  void TempClass::printSomething(T input) {
    std::cout << "\nTemplate is printing this: " << input << "\n\n";
}

nontempclass.h :

#ifndef NONTEMPCLASS_H
#define NONTEMPCLASS_H

class NonTempClass {

public:
    NonTempClass();
    void printSomething(int input);
};

#endif

nontempclass.cpp :

#include 
#include "nontempclass.h"

NonTempClass::NonTempClass() {
}

void NonTempClass::printSomething(int input) {
    std::cout << "\nNon template is printing this: " << input << "\n\n";
}

A program fordításakor a következő hibát kapom a g++ fordítótól:

Idézet:
main.o: In function `main':
main.cpp:(.text+0x1d): undefined reference to `TempClass::TempClass()'
main.cpp:(.text+0x30): undefined reference to `TempClass::printSomething(int)'

Miért ez a különbség a sablon osztály és nem sablon osztály között? Miért nem tudja lefordítani a sablon osztályt rendesen?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Kösz "zleho"!

Ennyi információ elég is.