template funktion in einer klasse



  • ich verwende die vc6, hab problem mit template in einer klasse.

    class testclass {
    	wstring m_str;
    
    public:
    	testclass(): m_str(L"2321"){}
    
    	template<class T>
    	T ToNumber() { 
    		wstringstream wss(m_str);
    		T num; 
    		wss >> num; 
    		return num; 
    	}
    };
    
    int main() {
    	testclass tc;
    	int n = tc.ToNumber< int >(); // hier soll fehler sein
    	wcout << n << endl;
    	return 0;
    }
    

    fehlermeldung ist

    ...\main.cpp(45) : error C2062: type 'int' unexpected



  • class T?



  • JnZn558 schrieb:

    ich verwende die vc6, hab problem mit template in einer klasse.

    class testclass {
    	wstring m_str;
    
    public:
    	testclass(): m_str(L"2321"){}
    
    	template<class T>
    	T ToNumber() { 
    		wstringstream wss(m_str);
    		T num; 
    		wss >> num; 
    		return num; 
    	}
    };
    
    int main() {
    	testclass tc;
    	int n = tc.ToNumber< int >(); // hier soll fehler sein
    	wcout << n << endl;
    	return 0;
    }
    

    fehlermeldung ist

    ...\main.cpp(45) : error C2062: type 'int' unexpected

    es ist egal ob ich class T nehme oder typename T, beide machen fehler



  • template<class T>
    class testclass {
    	std::wstring m_str;
    public:
    	testclass(): m_str(L"2321"){}
    	T ToNumber() {
    		std::wstringstream wss(m_str);
    		T num;
    		wss >> num;
    		return num;
    	}
    };
    int main()
    {
      testclass<int> tc;
      int n = tc.ToNumber();
      //...
    }
    


  • heisst es, template innerhalb klassen geht nicht???? bei visual studio 2008 waere das kein problem



  • Hast Recht, beim VS 2008 klappt es, beim VS6 nicht.
    Lösung: Nur noch VS 2008 benutzen.



  • dummerweise muss ich bei der firma vc6 benutzen, gibt es keine andere loesung als die ganze klasse in template klasse zu verwandeln. das gefaellt mir gar nicht



  • Da würde ich mir ernsthaft überlegen, mich nach einem neuen Job umzusehen.

    VC6 ist alt. VC6 ist älter als der C++-Standard. In wenig überraschender Weise unterstützt VC6 nicht den gesamten C++-Standard, und Methodenvorlagen sind eines der Dinge, die VC6 schlicht nicht kennt.



  • Ich glaube das Stichwort ist Membertemplates.


Anmelden zum Antworten