std:shared_ptr



  • Hallo,
    ich bin noch relativ neu dabei c++ zu lernen, und bin in meinem Lernbuch (Der c++ Programmierer) gerade beim Konzept der Smart-Pointer angekommen.

    Gegenwärtig versuche ich nichts anderes als ein Listing aus dem Buch zu kompilieren, um das ganze nachzuvollziehen und ein wenig damit rum zu spielen.

    Allerdings kompiliert schon das unveränderte Listing nicht, da das Konzept der shared_ptr offensichtlich unbekannt ist.

    Je nach IDE bzw. auch auf der Kommandozeile gibt er jeweils nur aus, dass der shared_ptr in diesem Gültigkeitsbereich nicht definiert ist.

    Ich hab hier mal das gekürzte Listing angehängt, auch wenn ich davon ausgehe, dass das innerhalb des Lehrbuches korrekt ist.

    #include<memory>
    #include<iostream>
    using namespace std;
    class Ressource {
    public:
    Ressource(int i)
    : id(i){
    }
    void hi() const {
    cout << "hier ist Ressource::hi (), Id=" << id << endl;
    }
    ~Ressource() {
    cout << "Ressource::Destruktor, Id=" << id << endl;
    }
    private:
    int id;
    };
    int main() {
    cout << "Konstruktoraufruf" << endl;
    shared_ptr<Ressource> p1(new Ressource(1));
    

    An Zeile 20 verweigert der Compiler die Übersetzung.

    Shared_ptr müssten aber über den Header memory bekannt sein, von daher verstehe ich nicht warum der Compiler das übersetzen verweigert.

    Ich nutze momentan Anjuta als IDE, GCC in der Version 4.7.2 und Fedora 17 als Betriebssystem.

    Hat jemand eine Idee für mich, warum das hier nicht funktioniert?
    Danke und Gruß
    Eagleeye



  • Hast du deinem Compiler das Flag -std=c++11 uebergeben?



  • 😃
    da sieht man das ich wohl noch übe.
    Das das nötig ist hat das Lehrbuch stillschweigend übergangen.



  • Ich überlege mir auch Der C++ Programmierer zu kaufen, ist es empfehlenswert?



  • ich find es sehr anspruchsvoll, aber man lernt halt richtig.
    Was mein ich damit.
    Viele andere Bücher bringen dir relativ lange Konzepte bei, die eigentlich veraltet sind. (Also C-Strings, arrays und manches andere).

    In diesem Buch lernt man sofort die aktuellen moderen Konzepte (also Vektoren, strings, Templates und anderes).

    Man muss ich also quälen, lernt aber dafür definitiv die Dinge, die man auch wirklich komfortabel nutzen kann, wenn man sie denn mal gemeistert hat.

    Gibt es übrigens in der Onleihe als pdf, falls du vorher mal reinlesen willst.



  • ok danke



  • Eagleeye777 schrieb:

    😃
    da sieht man das ich wohl noch übe.
    Das das nötig ist hat das Lehrbuch stillschweigend übergangen.

    im Abschnitt A.7.4 wird es mit std=c++0x erwähnt. aber eher am Rande 😉


Log in to reply