Template és több modulos program?
Valószínűleg nagyon amatőr a kérdés, de egy problémába ütköztem.
A header fájlban deklaráltam egy osztályt, aminek van egy template tagfüggvénye.
template <typename S, typename D>
void search(S sel, D data, std::ostream& os)
{...}
A tagfüggvényeket a projekt fájlban valósítottam meg, ezt is úgy szerettem volna, de "nem hagyta magát". Ha csak a .h-ban írtam ki a template-s sort, akkor a .cpp-ben nem ismerte fel S-et és D-t. Ha mindkettőben kiírtam, akkor pedig a tesztelésnél nem tudtam átadni neki a predikátumokat. Végül a függvény definícióját is a .h fájlban írtam meg (az osztály deklarációján belül), így tökéletesen működik, viszont eléggé ronda. Hogyan kéne szebben megcsinálni? Mit hova kéne "pakolnom"?
A template függvényeket, nem a forráskód fájlokban (.cpp) kell definiálni, hanem a header fájlokban (.h).
Ha rendes függvényt akarsz készíteni (nem inline függvényt), akkor a függvénynek csak a prototípusát írjad az osztály deklarációján belülre. A függvény definícióját az osztály deklarációján kivûlre írjad.
// valami.h
class Valami {
public:
template <typename S, typename D>
void search(S sel, D data, std::ostream& os);
};
template <typename S, typename D>
void Valami::search(S sel, D data, std::ostream& os) {
//...
}
És akkor ezek szerint a template <typename S, typename D> sort a definícióban és a deklarációban is ki kell írni?
Valamint a deklarációban elég lenne az hogy void search(S, D, std::ostream&), vagy oda is ki kell írnom template esetében hogy S sel éd D data?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!