Lokale Variable ist initialisiert aber nicht referenziert

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Lokale Variable ist initialisiert aber nicht referenziert

    Hallo,

    ich habe ein kleines Problem... ich sollte zu einer Vorgegeben funktion void f ein template schreiben, welches beliebige Typen umwandeln kann.. jedoch werden die Typen (X, Y, answer) in meiner Funktion nicht referenziert... heißt dass, das meine Templates falsch sind? Ich was vergessen habe? Oder kommt dass nur, weil sie nicht benutzt werden?

    das ist meine Klassen.. erste die Templates.. dann die Spezialisierungen und unten die Funktion void f, in der die Warnungen auftreten:

    Quellcode

    1. #include <exception>
    2. #include <sstream>
    3. #include "y.h"
    4. #include "x.h"
    5. //gibt To explizit an
    6. template <typename To, typename From> To stream_cast(From input)
    7. {
    8. std::stringstream str;
    9. str << input;
    10. To output;
    11. str >> output;
    12. if(str == false)
    13. throw std::bad_cast("bad stream_cast");
    14. return output;
    15. }
    16. //Spezialisierung für gleiche Typen
    17. template<typename To> To stream_cast(const To &input)
    18. {
    19. return input;
    20. }
    21. //Spezialisierung string in char* -> wird nicht umgewandelt, input wird zurückgegeben
    22. template<> std::string stream_cast(const char* input)
    23. {
    24. return input;
    25. }
    26. //Spezialisierung char* in string -> wird nicht umgewandelt, input wird zurückgegeben
    27. template<> const char* const stream_cast(std::string input)
    28. {
    29. //c_str() gibt den string als const char * zurück
    30. return input.c_str();
    31. }
    32. //X und Y sind gegeben
    33. class X;
    34. std::ostream& operator<<(std::ostream&,const X&);
    35. std::istream& operator>>(std::istream&,X&);
    36. class Y;
    37. std::ostream& operator<<(std::ostream&,const Y&);
    38. std::istream& operator>>(std::istream&,Y&);
    39. //Funktion f ist gegeben
    40. void f( const std::string& intstr, const X& x , const Y& y )
    41. {
    42. int answer = stream_cast<int>(intstr);//<int> da cast zu int - 12
    43. const std::string& str = stream_cast<std::string>(x);//5 cast zu string
    44. const X& xx = stream_cast<X>(str);//string 5 cast zu X 5
    45. const std::string& str2 = stream_cast<std::string>(y); //4 und 5.0 zu string
    46. const Y& yy = stream_cast<Y>(str2);//str2 zurück in Y 4 und Y 5.0
    47. }
    Alles anzeigen


    Warnungen für die void f:

    warning C4189: 'xx': Lokale Variable ist initialisiert aber nicht referenziert
    warning C4189: 'answer': Lokale Variable ist initialisiert aber nicht referenziert
    warning C4189: 'yy': Lokale Variable ist initialisiert aber nicht referenziert

    Soo.. hier nochmal die Klassen X und Y.. sie sind auch schon vorgegeben gewesen:

    Quellcode

    1. #include <istream>
    2. #include <ostream>
    3. class X {
    4. public:
    5. X() : i_() {}
    6. X(int i) : i_(i) {}
    7. int get_int() const {return i_;}
    8. int & get_int() {return i_;}
    9. private:
    10. int i_;
    11. };
    12. inline std::ostream& operator<<(std::ostream& os, const X& x)
    13. {
    14. os << x.get_int();
    15. return os;
    16. }
    17. inline std::istream& operator>>(std::istream& is, X& x)
    18. {
    19. is >> x.get_int();
    20. return is;
    21. }
    Alles anzeigen


    Quellcode

    1. #include <istream>
    2. #include <ostream>
    3. class Y {
    4. public:
    5. Y() : i_(), d_() {}
    6. Y(int i, double d) : i_(i), d_(d) {}
    7. int get_int () const {return i_;}
    8. double get_double() const {return d_;}
    9. int & get_int () {return i_;}
    10. double& get_double() {return d_;}
    11. private:
    12. int i_;
    13. double d_;
    14. };
    15. inline std::ostream& operator<<(std::ostream& os, const Y& y)
    16. {
    17. os << y.get_int() << ' ' << y.get_double();
    18. return os;
    19. }
    20. inline std::istream& operator>>(std::istream& is, Y& y)
    21. {
    22. is >> y.get_int() >> y.get_double();
    23. return is;
    24. }
    Alles anzeigen


    Danke schonmal, für jeden Hinsweis ;)

    LG.July
    Forza Italia!!!!!!