Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Migration GCC 3.3 -> GCC 3.4?

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.07.2004
    Beiträge
    456

    Migration GCC 3.3 -> GCC 3.4?

    Da die Migration eines meiner Programme von GCC 3.3 auf GCC 3.4 nun mehr in den programmiertechnischen Bereich fällt, stelle ich meine weiteren Fragen jetzt hier:

    folgendes Konstrukt meckert der 3.4er GCC, im Gegensatz zum 3.3er GCC:

    Code:
    template<class TYPE, class ARG_TYPE>
    class CArray : public vector<TYPE>
    {
    public:
    	void SetSize(int size, int grow=0)
    	{
    		m_size=size;
    		resize(size); // Zeile 139
    	}
    	int GetSize() const { return size(); } // Zeile 141
    	void RemoveAt(int idx)
    	{
    		typename CArray::iterator i=begin(); // Zeile 144
    		i=i+idx;
    		erase(i);
    	}
    	void InsertAt(int idx, TYPE o)
    	{
    		typename CArray::iterator i=begin(); // Zeile 150
    		i=i+idx;
    		insert(i,o);
    	}
    
    	void RemoveAll()
    	{
    		clear();
    		SetSize(m_size);
    	}
    
    	/*void print()
    	{
    		int z=0; printf("CArray (%i) (%i):\n",size(),capacity());
    		for(iterator i=begin(); i!=end(); i++) {
    			printf("[%i]=%i\n",z,(*i)); z++;
    		}
    	}*/
    
    	int m_size;
    };
    Die Übersetzung dieser Klasse liefert folgende Fehlermeldungen:

    Code:
    In file included from CGProcess.h:13,
                     from CSysUnit.h:10,
                     from CInfoServer.h:8,
                     from CBGInfo.h:15,
                     from CBGInfo.cxx:1:
    idffile.h: In member function `void CArray<TYPE, ARG_TYPE>::SetSize(int, int)':
    idffile.h:139: error: there are no arguments to `resize' that depend on a template parameter, so a declaration of `resize' must be available
    idffile.h:139: error: (if you use `-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
    idffile.h: In member function `int CArray<TYPE, ARG_TYPE>::GetSize() const':
    idffile.h:141: error: there are no arguments to `size' that depend on a template parameter, so a declaration of `size' must be available
    idffile.h: In member function `void CArray<TYPE, ARG_TYPE>::RemoveAt(int)':
    idffile.h:144: error: there are no arguments to `begin' that depend on a template parameter, so a declaration of `begin' must be available
    idffile.h: In member function `void CArray<TYPE, ARG_TYPE>::InsertAt(int, TYPE)':
    idffile.h:150: error: there are no arguments to `begin' that depend on a template parameter, so a declaration of `begin' must be available
    make: *** [obj/CBGInfo.o] Interrupt
    Kann mir einer sagen, wie man das jetzt im neuen Compiler macht? Der alte akzeptiert das so und funktioniert damit auch! Bitte um schnelle Antwort!
    Danke

    Gruß, Hendrik

  2. #2
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    http://gcc.gnu.org/gcc-3.4/changes.html#cplusplus, das könnte der 4. Punkt sein, probiers mal.
    I haven't lost my mind - It's somewhere on a backup-disc

  3. #3
    Registrierter Benutzer
    Registriert seit
    02.07.2004
    Beiträge
    456
    jupp, das war's. Danke (ishrtfm... *mpf*)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •