Problem mit Template-Funktion



  • Hi,

    ein kleines Beispielprogramm sollte mein Problem anschaulich verdeutlichen:

    #include <iostream>
    
    class class1 {
    public:
    	class1(int x) : value(x) {
    	}
    	typedef int dataType;
    	int value;
    };
    
    class class2 {
    public:
    	class2(float x) : value(x) {
    	}
    	typedef float dataType;
    	float value;
    };
    
    template <class X>
    void function(X &ref) {
    	X::dataType dummy;       // hier steigt der GCC (3.2) aus
    	dummy = ref.value;
    	std::cout << dummy << std::endl;
    }
    
    int main() {
    	class1 x(42);
    	class2 y(42.42);
    	function(x);
    	function(y);
    }
    

    Dieses Programm compiliert mit dem Borland C++ Compiler problemlos. Der GCC meckert, dass es einen Syntax-Error in der Zeile gibt, die die Variable Dummy deklariert. Kann ich den GCC irgendwie dazu bewegen diese Programm so zu kompilieren??

    Vielen Dank



  • Morgen,

    die Funktion muss folgenderweise aussehen:

    template <class X>
    void function(X &ref) {
        typename X::dataType dummy;       // hier steigt der GCC (3.2) aus
        dummy = ref.value;
        std::cout << dummy << std::endl;
    }
    

    mfg
    v R



  • danke 😃


Anmelden zum Antworten