wie findet ihr diese Klasse?



  • Wie wärs mit

    T& operator=(const T& data)
    {
    	return *pointer=data;
    }
    
    bool operator==(const T& operand) const
    {
    	return *pointer==operand;
    }
    


  • Da hast du wohl eine andere Ausgabe bei der Hand als ich...
    *c lässt sich verändern, c nicht. Wenn du struct cache durch T ersetzt, dann sind wir genau da, wo wir angefangen haben.
    Bevor du mich weiter für schwachsinnig hälst, füttere deinen Compiler mit folgendem:

    #include <iostream>
    #include <string>
    using namespace std;
    
    struct cache {
    	bool valid;
    	string rep;
    };
    class Date
    {
    	cache* c;
    	void compute_cache_value() const
    	{
    		c->rep = "blabla";
    	}
    public:
    	Date();
    	string string_rep() const;
    };
    Date::Date()
    {
    	c = new cache;
    	c->valid = false;
    }
    string Date::string_rep() const
    {
    	if (!c->valid) {
    		compute_cache_value() ;
    		c->valid = true;
    	}
    	return c->rep;
    }
    int main()
    {
    	Date d;
    	cout << d.string_rep() << endl;
    	return 0;
    }
    

    Wenn du mich dann immer noch für schwachsinnig hälst, dann kann ich dir auch nicht helfen.



  • Ich versteh das ganze noch nicht so ganz vom Sinn her. Hauptsache du denkst dran, das 'T' deines 'VirtualAllocator's nur PODs sein können bzw. sollten.

    Ich stell mir gerade vor jemand schreibt

    VirtualAllocator<int> foo(3);
    

    in foo passt nichtmals ein int rein.

    wieso ich kein new/delete verwende? malloc scheint erstmal ähnlich schnell zu sein wie new/delete,ist aber für meine Zwecke erstmal viel einfacher.

    Versteh ich noch weniger:

    void * foo = malloc(20);
    
    void * bar = operator new(20);
    

    Warum ist das untere jetzt komplizierter, als das Obere? Wegen der paar Zeichen?

    Ist dein 'VirtualAllocator' überhaupt noch ein Allokator? Irgendwie ist das so 'ne Art Array auf dem Heap, nur das der Speicher nicht zwangsweise eine passende Größe baben muss. Der Allokator an sich ist ja die apselung für den Speicher. Deswegen finde ich den Namen doof.


Anmelden zum Antworten