<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Schreib&#x2F;Lese-Zugriffsklassen]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe eine Klasse mit Daten, die in einer bestimmten Form vorliegen, die erstmal funktioniert.</p>
<p>Jetzt möchte ich gerne eine andere Klasse Accessor definieren, welche Schreib/Lesezugriffe auf diese Klasse über ein bestimmtes Format gewährleistet. Das ist also eine Art Wrapper, der auf der Klasse aufsetzt.</p>
<p>Mein Problem: Diese Klasse hat Schreibe- und Lesezugriffe. Die Schreibzugriffe funktionieren aber natürlich nur mit einem nicht-konstanten Datenobjekt. Wie löse ich es, dass jetzt je nach Paramertyp beides geht? Oder soll ich zwei Klassen machen und das vererbungstechnisch aufbauen wie iostream?</p>
<p>Hier etwas Code:</p>
<pre><code class="language-cpp">class DataObject
{
    // ...
};

class Accessor
{
public:
    Accessor(DataObject&amp; object);

    void WriteViaFormat(const std::string&amp; message);
    std::string ReadInFormat() const;

private:
    DataObject* object;
};

int main()
{
    const DataObject a;
    DataObject b;

    Accessor accessorA(a);
    std::string message1 = a.ReadViaFormat(); // soll gehen
    a.WriteViaFormat(&quot;&lt;tag&gt;Message&lt;/tag&gt;&quot;); // das soll natürlich Kompilierfehler geben

    // der Accessor auf b angewandt soll jedoch ReadViaFormat und WriteViaFormat akzeptieren
}
</code></pre>
<p>Wie löst man so was? Zwei Accessoren draus machen (ReadAccessor, WriteAccessor) und dann einen WriteReadAccessor von beiden erben lassen?</p>
<p>Besten Gruß und vielen Dank,<br />
Eisflamme</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/318897/schreib-lese-zugriffsklassen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Jul 2026 09:52:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/318897.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Jul 2013 11:52:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schreib&#x2F;Lese-Zugriffsklassen on Tue, 30 Jul 2013 11:52:41 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe eine Klasse mit Daten, die in einer bestimmten Form vorliegen, die erstmal funktioniert.</p>
<p>Jetzt möchte ich gerne eine andere Klasse Accessor definieren, welche Schreib/Lesezugriffe auf diese Klasse über ein bestimmtes Format gewährleistet. Das ist also eine Art Wrapper, der auf der Klasse aufsetzt.</p>
<p>Mein Problem: Diese Klasse hat Schreibe- und Lesezugriffe. Die Schreibzugriffe funktionieren aber natürlich nur mit einem nicht-konstanten Datenobjekt. Wie löse ich es, dass jetzt je nach Paramertyp beides geht? Oder soll ich zwei Klassen machen und das vererbungstechnisch aufbauen wie iostream?</p>
<p>Hier etwas Code:</p>
<pre><code class="language-cpp">class DataObject
{
    // ...
};

class Accessor
{
public:
    Accessor(DataObject&amp; object);

    void WriteViaFormat(const std::string&amp; message);
    std::string ReadInFormat() const;

private:
    DataObject* object;
};

int main()
{
    const DataObject a;
    DataObject b;

    Accessor accessorA(a);
    std::string message1 = a.ReadViaFormat(); // soll gehen
    a.WriteViaFormat(&quot;&lt;tag&gt;Message&lt;/tag&gt;&quot;); // das soll natürlich Kompilierfehler geben

    // der Accessor auf b angewandt soll jedoch ReadViaFormat und WriteViaFormat akzeptieren
}
</code></pre>
<p>Wie löst man so was? Zwei Accessoren draus machen (ReadAccessor, WriteAccessor) und dann einen WriteReadAccessor von beiden erben lassen?</p>
<p>Besten Gruß und vielen Dank,<br />
Eisflamme</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2342240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2342240</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 30 Jul 2013 11:52:41 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lese-Zugriffsklassen on Tue, 30 Jul 2013 11:59:05 GMT]]></title><description><![CDATA[<p>Ich würde tatsächlich zwei verschiedene Interfaces definieren ( <code>Accessor</code> und <code>Manipulator</code> ). Ein Accessor hört sich nach meinem Verständnis nach etwas an, das nur lesend auf etwas zugreifen möchte. Möglicherweise ergibt es sogar Sinn, <code>Manipulator</code> von <code>Accessor</code> erben zu lassen, da er über die gleichen Zugriffsrechte wie ein Accessor verfügt, aber zusätzlich das Objekt sogar ändern darf. Geht natürlich nicht, wenn in deinem Szenario ein Manipulator ein Objekt verändern, aber nicht lesen darf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2342242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2342242</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 30 Jul 2013 11:59:05 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lese-Zugriffsklassen on Tue, 30 Jul 2013 12:20:12 GMT]]></title><description><![CDATA[<p>Stimmt, das ergibt Sinn. Hm, aber mir ist Accessor als Leser noch nicht klar genug, ich finde, das kann man auch missverstehen. Vll. einfach Reader und Writer? Wobei das ein wenig sehr nach &quot;Text&quot; klingt. Ich will noch andere Reader/Write schreiben, welche aber ein anderes Format (nicht Text) haben, da fände ich irgendeinen Oberbegriff fein. Oder ist read/write eigentlich doch eindeutig?</p>
<p>Edit: Obwohl, eigentlich Accessor vs. Manipulator doch recht üblich, jedenfalls ergab das eine kurze Googlesuche. Dann mache ich das Mal so. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2342244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2342244</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 30 Jul 2013 12:20:12 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lese-Zugriffsklassen on Tue, 30 Jul 2013 12:35:04 GMT]]></title><description><![CDATA[<p>Wo ist da genau der Vorteil gegenüber freien Funktionen?</p>
<pre><code class="language-cpp">void WriteViaFormat(DataObject&amp; d, const std::string&amp; message);
std::string ReadInFormat(DataObject const&amp; d);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2342261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2342261</guid><dc:creator><![CDATA[hratos]]></dc:creator><pubDate>Tue, 30 Jul 2013 12:35:04 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lese-Zugriffsklassen on Tue, 30 Jul 2013 12:43:05 GMT]]></title><description><![CDATA[<p>Die Klassen können einen Zustand haben und können beispielsweise Caching unterstützen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2342269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2342269</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 30 Jul 2013 12:43:05 GMT</pubDate></item></channel></rss>