anfänger problem -> string array ?



  • also ich habe folgenden code:
    ...
    hab jetzt was geändert:

    #include <iostream>
    #include <string>
    #include <assert.h>
    using namespace std;
    
    template<class T>
    class Vector
    {
    private:
    	int size;
    	T *data;
    public:
    	Vector(int m_size)
    	{
    		size = m_size;
    		data = new T[size];
    	}
    	~Vector()
    	{
    		delete[] data;
    	}
    	void fillIn(T toFillIn)
    	{
    		T *tempdata = new T[size+1];
    		tempdata = data;
    		delete[] data;
    		data = new T[size+1];
    		data = tempdata;
    		delete[] tempdata;
    		size+=1;
    		data[size] = toFillIn;
    	}
    	void print()
    	{
    		for(int i=0;i<=size;++i)
    		{
    			cout<<data[i]<<endl;
    		}
    	}
    	double &operator[] (int index)
    	{
    		assert(index>=0);
    		assert(index<size);
    		return data[index];
    	}
    };
    void main()
    {
    	cout<<"Starte Telefonbuch"<<endl;
    	Vector<string> namen(3);
    	namen.fillIn("fuck");
    	//namen.print();
    
    }
    

    jeeeeetzt kriege ich n debug fehlerfenster wenn das Programm startet!
    da steht irgendwas von debug assertion failed
    von wegen _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
    in dbgheap.c
    😞



  • #include <iostream>
    #include <string>
    
    using namespace std;
    
    template<class T>
    class Vector
    {
    private:
        int size;
        T *data;
    public:
        Vector(int m_size)
        {
            size = m_size;
            data = new T[m_size];
        }
        ~Vector()
        {
            delete[] data;
        }
        void fillIn(T toFillIn)
        {
            T *tempdata = new T[size+1];
            copy(data,data+size,tempdata);
            delete []data;
            data=tempdata;
            data[size] = toFillIn;
            size+=1;
        }
        void print()
        {
            for(int i=0;i<size;++i) 
            {
                cout<<data[i]<<endl; 
            }
        } 
    };
    void main() 
    {
        cout<<"Starte Telefonbuch"<<endl; 
        Vector<string> namen(3);
        namen.fillIn("bla");
        namen.print();
    }
    


  • ahhhh! es klappt danke!
    aber was war denn bei meiner (unschönen) version der fehler? 😉 sonst lern ich ja nix draus 🙂



  • Wie wärs mit dem vergleich der Quelltexte ?!



  • jaaa ich seh schon das es anders gemacht ist...ich bin mir aber meines fehlers nicht wirklich bewusst! liegts vielleicht hier dran:
    data = new T[size+1];
    ?



  • #include <iostream>
    #include <string>
    #include <vector>
    
    using namespace std;
    template <class T>
    class prvector:public vector<T>
    {
    public:
    void print()
    {
       for(int i=0;i<size();i++) cout << at(i);
    }
    };
    void main()
    {
        cout<<"Starte Telefonbuch"<<endl;
        prvector<string> namen;
        namen.push_back("bla");
        namen.print();
    }
    

Anmelden zum Antworten