<?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[const Problem]]></title><description><![CDATA[<p>Ich habe diverse Probleme mit const und sehe nicht was falsch ist. Das hier ist die Fehlermeldung:</p>
<blockquote>
<p>In file included from ..\include\qtdevices\CommonPositioningController.cpp:2:<br />
..\include\qtdevices\/CommonPositioningStage.h: In member function 'CommonPositioningStage&amp; CommonPositioningStage::operator=(const CommonPositioningStage&amp;)':<br />
..\include\qtdevices\/CommonPositioningStage.h:24: error: non-static const member 'CommonPositioningStagePrivate* const CommonPositioningStage::d', can't use default assignment operator<br />
..\include\qtdevices\CommonPositioningController.cpp: In member function 'CommonPositioningStage CommonPositioningController::stage()':<br />
..\include\qtdevices\CommonPositioningController.cpp:115: note: synthesized method 'CommonPositioningStage&amp; CommonPositioningStage::operator=(const CommonPositioningStage&amp;)' first required here</p>
</blockquote>
<p>und das ganze wegen der Aufrufe von addStage und axisNumber zusammen mit dem d-Pointer.</p>
<pre><code class="language-cpp">class CommonPositioningControllerPrivate
{
public:    
    CommonPositioningControllerPrivate(){}
    QVector&lt;CommonPositioningStage&gt; stageProperties;

};

CommonPositioningController::CommonPositioningController()
    :d(new CommonPositioningControllerPrivate)
{
}

bool CommonPositioningController::addStage(CommonPositioningStage &amp; newStage)
{
    bool axisAlreadyExists = false;
    for (int i = 0; i &lt; d-&gt;stageProperties.size(); ++i)
    {
        if (d-&gt;stageProperties.at(i).axisNumber() == newStage.axisNumber()) {
...
}

int CommonPositioningStage::axisNumber() const
{
    return d-&gt;axisNumber;
}
</code></pre>
<p>lasse ich das const bei CommonPositioningStage::axisNumber() weg (wegen Problemen mit dem d-Pointer), dann erhalte ich noch mehr Fehlermeldungen,<br />
alle in CommonPositioningController::axisNumber bezüglich non const von CommonPositioningStage::axisNumber():</p>
<pre><code class="language-cpp">int CommonPositioningController::axisNumber(int stageListIndex) const
{
    return d-&gt;stageProperties.at(stageListIndex).axisNumber();
}
</code></pre>
<blockquote>
<p>..\include\qtdevices\CommonPositioningController.cpp: In member function 'bool CommonPositioningController::addStage(CommonPositioningStage&amp;)':<br />
..\include\qtdevices\CommonPositioningController.cpp:47: error: passing 'const CommonPositioningStage' as 'this' argument of 'int CommonPositioningStage::axisNumber()' discards qualifiers</p>
</blockquote>
<p>wenn ich auch CommonPositioningController::axisNumber das const weglasse bleiben die Fehler erhalten.</p>
<p>Was ist der eigentliche Fehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286202/const-problem</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 00:50:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286202.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 May 2011 14:40:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to const Problem on Thu, 05 May 2011 14:40:41 GMT]]></title><description><![CDATA[<p>Ich habe diverse Probleme mit const und sehe nicht was falsch ist. Das hier ist die Fehlermeldung:</p>
<blockquote>
<p>In file included from ..\include\qtdevices\CommonPositioningController.cpp:2:<br />
..\include\qtdevices\/CommonPositioningStage.h: In member function 'CommonPositioningStage&amp; CommonPositioningStage::operator=(const CommonPositioningStage&amp;)':<br />
..\include\qtdevices\/CommonPositioningStage.h:24: error: non-static const member 'CommonPositioningStagePrivate* const CommonPositioningStage::d', can't use default assignment operator<br />
..\include\qtdevices\CommonPositioningController.cpp: In member function 'CommonPositioningStage CommonPositioningController::stage()':<br />
..\include\qtdevices\CommonPositioningController.cpp:115: note: synthesized method 'CommonPositioningStage&amp; CommonPositioningStage::operator=(const CommonPositioningStage&amp;)' first required here</p>
</blockquote>
<p>und das ganze wegen der Aufrufe von addStage und axisNumber zusammen mit dem d-Pointer.</p>
<pre><code class="language-cpp">class CommonPositioningControllerPrivate
{
public:    
    CommonPositioningControllerPrivate(){}
    QVector&lt;CommonPositioningStage&gt; stageProperties;

};

CommonPositioningController::CommonPositioningController()
    :d(new CommonPositioningControllerPrivate)
{
}

bool CommonPositioningController::addStage(CommonPositioningStage &amp; newStage)
{
    bool axisAlreadyExists = false;
    for (int i = 0; i &lt; d-&gt;stageProperties.size(); ++i)
    {
        if (d-&gt;stageProperties.at(i).axisNumber() == newStage.axisNumber()) {
...
}

int CommonPositioningStage::axisNumber() const
{
    return d-&gt;axisNumber;
}
</code></pre>
<p>lasse ich das const bei CommonPositioningStage::axisNumber() weg (wegen Problemen mit dem d-Pointer), dann erhalte ich noch mehr Fehlermeldungen,<br />
alle in CommonPositioningController::axisNumber bezüglich non const von CommonPositioningStage::axisNumber():</p>
<pre><code class="language-cpp">int CommonPositioningController::axisNumber(int stageListIndex) const
{
    return d-&gt;stageProperties.at(stageListIndex).axisNumber();
}
</code></pre>
<blockquote>
<p>..\include\qtdevices\CommonPositioningController.cpp: In member function 'bool CommonPositioningController::addStage(CommonPositioningStage&amp;)':<br />
..\include\qtdevices\CommonPositioningController.cpp:47: error: passing 'const CommonPositioningStage' as 'this' argument of 'int CommonPositioningStage::axisNumber()' discards qualifiers</p>
</blockquote>
<p>wenn ich auch CommonPositioningController::axisNumber das const weglasse bleiben die Fehler erhalten.</p>
<p>Was ist der eigentliche Fehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2059030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2059030</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Thu, 05 May 2011 14:40:41 GMT</pubDate></item><item><title><![CDATA[Reply to const Problem on Thu, 05 May 2011 14:55:06 GMT]]></title><description><![CDATA[<p>Was ist denn d, und wie ist es deklariert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2059037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2059037</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 05 May 2011 14:55:06 GMT</pubDate></item><item><title><![CDATA[Reply to const Problem on Thu, 05 May 2011 17:09:33 GMT]]></title><description><![CDATA[<p>Ich bin inzwischen darauf gekommen, das at(i) const ist und daher alle funktionen davon const sein müssen. Da ich den Bereich in der Klasse sowieso vorher prüfe, habe ich jetzt einfach alles in [i] geändert.<br />
Zudem kopiere ich eine Klasse mit d-pointer, und brauche dafür einen manuellen Zuweisungsoperator. Nachdem ich auch das eingebaut habe geht jetzt alles.<br />
Der d-pointer war const deklariert, da ich aber einen zuweisungsoperator brauchte, jetzt nicht mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2059135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2059135</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Thu, 05 May 2011 17:09:33 GMT</pubDate></item><item><title><![CDATA[Reply to const Problem on Thu, 05 May 2011 17:17:05 GMT]]></title><description><![CDATA[<p>pospiech schrieb:</p>
<blockquote>
<p>Ich bin inzwischen darauf gekommen, das at(i) [...]</p>
</blockquote>
<p>Wenn es sich um einen <code>std::vector</code> handelt, dann gibt es eigentlich sowohl eine <code>const</code> als auch eine <code>non-const</code> Version von <code>at()</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2059140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2059140</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 05 May 2011 17:17:05 GMT</pubDate></item><item><title><![CDATA[Reply to const Problem on Fri, 06 May 2011 05:44:48 GMT]]></title><description><![CDATA[<p>Es handelt sich aber um QVector und da gibt es nur die const Variante von at. Man könnte hier statt desse den operator[] verwenden. Den gibt es wieder in beiden Varianten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2059307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2059307</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 06 May 2011 05:44:48 GMT</pubDate></item><item><title><![CDATA[Reply to const Problem on Fri, 06 May 2011 06:57:49 GMT]]></title><description><![CDATA[<p>pospiech schrieb:</p>
<blockquote>
<p>Was ist der eigentliche Fehler?</p>
</blockquote>
<p>Der eigentliche Fehler ist, dass du eine nichttriviale Klasse <code>CommonPositioningStage</code> ohne einen adäquaten op= definiert hast. Der Compiler versucht ihn zu generieren, weil du ihn irgendwo explizit oder iplizit benutzt, und fällt damit auf die Nase.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2059327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2059327</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 06 May 2011 06:57:49 GMT</pubDate></item></channel></rss>