Speicher



  • Hallo es handelt sich um eine sehr ähnliche Aufgabe wie letztes mal.
    Ich wollte nur fragen ,ob ich den Speicher richtig angelegt habe ,da es ein** Pointer ist bin ich mir nicht sicher:

    Den Destruktor habe ich noch net angelegt

     #ifndef CPLAYLIST_H_
    #define CPLAYLIST_H_
    #include "CTitle.h"
    #include "CMusicDb.h"
    
    using namespace std;
    
    class CPlaylist
    {
    private:
    	CTitle** m_titles;
    	int m_nextFree;
    	int m_arraySize;
    public:
    	CPlaylist(int initialSize = 5);
    	~CPlaylist();
    	void add(CTitle* title);
    	void print() const;
    	int totalPlayTime() const;
    };
    ```#endif /* CPLAYLIST_H_ */
    
    #include<iostream>
    using namespace std;
    #include "CPlaylist.h"
    
    
    CPlaylist::CPlaylist(int initialSize ){
    
    	m_arraySize = initialSize;
        m_nextFree = 0;
    	if(m_arraySize < 1 ){
    
    		m_arraySize = 5;
    	}
    
    	else{
    
    		m_titles = new CTitle* [m_arraySize];
    	}
    
    
    }
    
    
    
    


  • Nein. Du wiederholst deine Fehler.



  • Ist der Speicher nicht richtig gesetzt oder wie ?

    Habe es doch fast analog wie letztes mal gemacht ?



  • Was bedeutet denn deiner Meinung nach 'else'?
    Geh deinen Konstruktor mal Schritt für Schritt durch, für verschiedene Eingaben (einmal so, dass die if Bedingung war wird und einmal, so dass sie nicht war wird).
    Du kannst hier auch gerne die einzelnen Schritte hin schreiben.



  •  
    #include<iostream>
    using namespace std;
    #include "CPlaylist.h"
    
    
    CPlaylist::CPlaylist(int initialSize ){
    
    	m_arraySize = initialSize;
        m_nextFree = 0;
    	if(m_arraySize < 1 ){
    
    		m_arraySize = 5;
    	}
    
               m_titles = new CTitle* [m_arraySize];
    	
    }
    
    
    
    

    Ich glaube man lässt das else besser weg ? Dann wird der Speicher immer gesetzt ?



  • Nicht glauben, sondern logisch denken! Gerade als Mathematiker sollte dir das doch liegen.

    Ja, so ist es korrekt.



  • Danke leute für die schnelle Hilfe