Kezdőlap › Fórumok › Programozás › Fejtörő – „csak guruknak”…
- This topic has 120 hozzászólás, 10 résztvevő, and was last updated 18 years telt el by
pointux.
-
SzerzőBejegyzés
-
2007-06-17-19:23 #2104415
Nem jó, próbáld csak ki:
Code:template
class Class {
public:
void print_type ();
};template
void Class::print_type () {
std::cout << typeid(R).name() << std::endl;
std::string str;
str = typeid(R).name();
}int main(int argc, char **argv)
{
Class<Class<std::vector > > var;var.print_type();
return 0;
}Az eredmény:
5ClassISt6vectorIiSaIiEEE
ami nem nagyon hasonlít az elvártra (Class >). Nem is csoda, dekódolni kellene.
namespace std
{
/**
* @brief Part of RTTI.
*
* The @c type_info class describes type information generated by
* an implementation.
*/
class type_info
{(…)
/** Returns an @e implementation-defined byte string; this is not
* portable between compilers! */
const char* name() constAkkor hogy is van a helyes megoldás?
2007-06-17-19:23 #2104416Nem jó, próbáld csak ki:
Code:template
class Class {
public:
void print_type ();
};template
void Class::print_type () {
std::cout << typeid(R).name() << std::endl;
std::string str;
str = typeid(R).name();
}int main(int argc, char **argv)
{
Class<Class<std::vector > > var;var.print_type();
return 0;
}Az eredmény:
5ClassISt6vectorIiSaIiEEE
ami nem nagyon hasonlít az elvártra (Class >). Nem is csoda, dekódolni kellene.
namespace std
{
/**
* @brief Part of RTTI.
*
* The @c type_info class describes type information generated by
* an implementation.
*/
class type_info
{(…)
/** Returns an @e implementation-defined byte string; this is not
* portable between compilers! */
const char* name() constAkkor hogy is van a helyes megoldás?
2007-06-17-19:34 #2104417Azt ismerem intre azt írja, hogy i, unsigned intre, szem azt, hogy j, a sajátokra, meg ehhez hasonlókat. (Gyanítom, hogy ezek kerülnének az asm file-ba.)
2007-06-17-19:34 #2104418Azt ismerem intre azt írja, hogy i, unsigned intre, szem azt, hogy j, a sajátokra, meg ehhez hasonlókat. (Gyanítom, hogy ezek kerülnének az asm file-ba.)
2007-06-28-16:26 #2104419Na, akkor fejtörő!
Mag szerettem volna valósítani egy olyan osztályt melynek pl.: egy std::list-et adok át paraméterül, de képes fogadni, bármilyen class típusú osztályt.
Viszont template > nyílván nem valósítható meg. Az std::list-et csak paraméterként adhatom meg, mert akkor egyes operátorok nem lennének egyértelműek… hibát okozhat.
A template szintén nem nyerő, mert akkor a felhasználóra lenne bízva, hogy a typeT illetve a classT-ben foglalt típus azonos legyen.
(Ja, és a ClassT ismerete nem elég! Kell a typeT-t is ismernem.)Az igazi az lenne, ha így lehetne használni:
Class > class ( std::list )Persze ez megvalósítható egy szimpla template -vel, csak akkor az int típust honnan tudom meg.
(Nyílván a műveleteket jelen esetben az std::list int típusú tartalmán akarom végezni. De ehhez tudni kéne, hogy ő int és nem pl. float.)Ki mit gondol, hogyan lehetne megoldani?
2007-06-28-16:26 #2104420Na, akkor fejtörő!
Mag szerettem volna valósítani egy olyan osztályt melynek pl.: egy std::list-et adok át paraméterül, de képes fogadni, bármilyen class típusú osztályt.
Viszont template > nyílván nem valósítható meg. Az std::list-et csak paraméterként adhatom meg, mert akkor egyes operátorok nem lennének egyértelműek… hibát okozhat.
A template szintén nem nyerő, mert akkor a felhasználóra lenne bízva, hogy a typeT illetve a classT-ben foglalt típus azonos legyen.
(Ja, és a ClassT ismerete nem elég! Kell a typeT-t is ismernem.)Az igazi az lenne, ha így lehetne használni:
Class > class ( std::list )Persze ez megvalósítható egy szimpla template -vel, csak akkor az int típust honnan tudom meg.
(Nyílván a műveleteket jelen esetben az std::list int típusú tartalmán akarom végezni. De ehhez tudni kéne, hogy ő int és nem pl. float.)Ki mit gondol, hogyan lehetne megoldani?
2007-06-28-17:55 #2104421Na, ilyenkor sajnálom nagyon, hogy c-ben, c++-ban csak egy pöttyet (=felismerem+helloworld), a template-ekben pedig egyáltalán nem vagyok jártas 🙁
De ígérem, itt a nyári szünet, pótvizsgáig szinte(!) semmi dolgom, ezeket is pótlom…2007-06-28-17:55 #2104422Na, ilyenkor sajnálom nagyon, hogy c-ben, c++-ban csak egy pöttyet (=felismerem+helloworld), a template-ekben pedig egyáltalán nem vagyok jártas 🙁
De ígérem, itt a nyári szünet, pótvizsgáig szinte(!) semmi dolgom, ezeket is pótlom…2007-07-01-09:20 #2104423Na, megvan a megoldás. 🙂
template class classT >
class Class {
}
[/CODE][CODE=main.cpp]
Class classList;
[/CODE][CODE=Class.h]
template class classT >
class Class {
}
[/CODE]Class classList;
[/CODE][CODE=main.cpp]
Class classList;
[/CODE]2007-07-01-09:20 #2104424Na, megvan a megoldás. 🙂
template class classT >
class Class {
}
[/CODE][CODE=main.cpp]
Class classList;
[/CODE][CODE=Class.h]
template class classT >
class Class {
}
[/CODE]Class classList;
[/CODE][CODE=main.cpp]
Class classList;
[/CODE] -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz