<?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[Fehler:&#x27;p&#x27; was not declared in this scope]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>es geht um etwa folgenden Code:</p>
<p>product.h</p>
<pre><code>...
class Product
{
    ...
};
</code></pre>
<p>tree.cpp</p>
<pre><code>#include &quot;product.h&quot;
...

Tree::Tree()
{
    Product p;
}
</code></pre>
<p>Hierbei erhalte ich beim Kompilieren den Fehler:<br />
tree.cpp:xx: Fehler:'p' was not declared in this scope</p>
<p>Ein &quot;Product* p;&quot; geht genauso wenig.</p>
<p>Ich denke er hat irgendein Problem mit der Klasse Product. Ich probiere schon eine ganze Weile und komme einfach nicht dahinter. Bin ich blind und übersehe einen groben Fehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/308353/fehler-p-was-not-declared-in-this-scope</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 21:12:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/308353.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 22 Sep 2012 10:01:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler:&#x27;p&#x27; was not declared in this scope on Sat, 22 Sep 2012 10:01:52 GMT]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>es geht um etwa folgenden Code:</p>
<p>product.h</p>
<pre><code>...
class Product
{
    ...
};
</code></pre>
<p>tree.cpp</p>
<pre><code>#include &quot;product.h&quot;
...

Tree::Tree()
{
    Product p;
}
</code></pre>
<p>Hierbei erhalte ich beim Kompilieren den Fehler:<br />
tree.cpp:xx: Fehler:'p' was not declared in this scope</p>
<p>Ein &quot;Product* p;&quot; geht genauso wenig.</p>
<p>Ich denke er hat irgendein Problem mit der Klasse Product. Ich probiere schon eine ganze Weile und komme einfach nicht dahinter. Bin ich blind und übersehe einen groben Fehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253477</guid><dc:creator><![CDATA[Zeeke]]></dc:creator><pubDate>Sat, 22 Sep 2012 10:01:52 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler:&#x27;p&#x27; was not declared in this scope on Sat, 22 Sep 2012 10:16:35 GMT]]></title><description><![CDATA[<p>Zeeke schrieb:</p>
<blockquote>
<p>es geht um etwa folgenden Code:</p>
</blockquote>
<p>Ist ja fein. Und um welchen Code geht es wirklich? Siehe dritter Link in meiner Signatur.</p>
<p>Erfahrung flüstert mir auch ohne passenden Code: Zyklische Abhängigkeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253484</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 22 Sep 2012 10:16:35 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler:&#x27;p&#x27; was not declared in this scope on Sat, 22 Sep 2012 10:31:52 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Erfahrung flüstert mir auch ohne passenden Code: Zyklische Abhängigkeit.</p>
</blockquote>
<p>Jap, ich wette tree.h und product.h inkludieren sich direkt oder indirekt gegenseitig....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253490</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sat, 22 Sep 2012 10:31:52 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler:&#x27;p&#x27; was not declared in this scope on Sat, 22 Sep 2012 12:37:19 GMT]]></title><description><![CDATA[<p>Hey, erstmal danke für eure Antworten.<br />
Auf etwas in Richtung zyklische Abhängigkeiten würde ich ja auch zunächst tippen, aber ich finde nichts. Der Code ist umfangreich, darum versuchte ich ihn auf das m.E. wesentliche zu reduzieren.</p>
<p>tree.h inkludiert nicht product.h. product.h inkludiert tree.h nicht.<br />
Jedoch leitet die Klasse Product von Entity ab, und treeitem.h inkludiert entity.h, und tree.h inkludiert dann treeitem.h.<br />
entity.h inkludiert product.h aber nicht!</p>
<p>Kann es auch ein Problem mit Basisklassen geben? Mich interessiert allgemein, wann ein solcher Fehler auftreten kann.</p>
<p>Es hat auch nicht geholfen, den Include von product.h in tree.cpp zu entfernen und stattdessen dort eine Klasse product.h zu definieren.</p>
<p>Gibt es mehr als zyklische Abhängigkeiten, die einen solchen Fehler produzieren können?<br />
Doch mehr Code rein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253505</guid><dc:creator><![CDATA[Zeeke]]></dc:creator><pubDate>Sat, 22 Sep 2012 12:37:19 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler:&#x27;p&#x27; was not declared in this scope on Sat, 22 Sep 2012 13:26:59 GMT]]></title><description><![CDATA[<p>Und product.h inkludiert auch nicht entity.h oder so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253508</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sat, 22 Sep 2012 13:26:59 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler:&#x27;p&#x27; was not declared in this scope on Sat, 22 Sep 2012 14:41:58 GMT]]></title><description><![CDATA[<p>Doch, klar, product.h muss entity.h inkludieren um davon abzuleiten.<br />
Aber weder entity.h noch product.h inkludieren eben etwas vom tree (treeitem.h, tree.h).</p>
<p>-&gt; heißt inkludiert</p>
<p>product.h -&gt; entity.h<br />
entity.h -&gt; nur Standardimports (QString, QSqlQuery)<br />
treeitem.h -&gt; entity.h (neben QList, QVariant, QVector)<br />
tree.h -&gt; nur Standardimports aus Qt sowie eine Vorwärtsdeklaration (class TreeItem;)<br />
tree.cpp -&gt; product.h, tree.h, treeitem.h</p>
<p>Ich werd nicht schlau drauß..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253530</guid><dc:creator><![CDATA[Zeeke]]></dc:creator><pubDate>Sat, 22 Sep 2012 14:41:58 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler:&#x27;p&#x27; was not declared in this scope on Sat, 22 Sep 2012 15:46:25 GMT]]></title><description><![CDATA[<p>Zeeke schrieb:</p>
<blockquote>
<p>Hallo Forum,</p>
<p>es geht um etwa folgenden Code:</p>
<p>product.h</p>
<pre><code>...
class Product
{
    ...
};
</code></pre>
<p>tree.cpp</p>
<pre><code>#include &quot;product.h&quot;
...

Tree::Tree()
{
    Product p;
}
</code></pre>
<p>Hierbei erhalte ich beim Kompilieren den Fehler:<br />
tree.cpp:xx: Fehler:'p' was not declared in this scope</p>
</blockquote>
<p>Das ist schon mal gelogen (bzw. unvollständiger Code).<br />
Der Compiler findet p nicht. Dass muss er hier aber auch gar nicht, schließlich zeigst du uns nur eine Deklaration von p.</p>
<p>zum Rätsel Raten dient dieses Forum allerdings nicht. Wenn du den Fehler nach intensiver Suche nicht findest, muss es uns umso schwerer fallen ohne den entsprechenden Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253546</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 22 Sep 2012 15:46:25 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler:&#x27;p&#x27; was not declared in this scope on Sun, 23 Sep 2012 10:44:43 GMT]]></title><description><![CDATA[<p>Ich konnte den Fehler finden.</p>
<p>camper schrieb:</p>
<blockquote>
<p>Das ist schon mal gelogen (bzw. unvollständiger Code).<br />
Der Compiler findet p nicht. Dass muss er hier aber auch gar nicht, schließlich zeigst du uns nur eine Deklaration von p.</p>
<p>zum Rätsel Raten dient dieses Forum allerdings nicht. Wenn du den Fehler nach intensiver Suche nicht findest, muss es uns umso schwerer fallen ohne den entsprechenden Code.</p>
</blockquote>
<p>Doch weiß man als Laie nicht immer was nun Rätselraten ist, oder was für einen Geübten einfach genannt werden kann.</p>
<p>Ich habe den Fehler gefunden, es lag an einem enum:</p>
<pre><code>enum TreeItemType {
    Product,
    ...
};
</code></pre>
<p>Mir war nicht klar, dass ein solcher Enum-Wert für den Compiler in Konflikt gerät mit einem Klassennamen.</p>
<p>VG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253700</guid><dc:creator><![CDATA[Zeeke]]></dc:creator><pubDate>Sun, 23 Sep 2012 10:44:43 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler:&#x27;p&#x27; was not declared in this scope on Sun, 23 Sep 2012 10:51:38 GMT]]></title><description><![CDATA[<p>Zeeke schrieb:</p>
<blockquote>
<p>Ich habe den Fehler gefunden, es lag an einem enum:</p>
<pre><code>enum TreeItemType {
    Product,
    ...
};
</code></pre>
<p>Mir war nicht klar, dass ein solcher Enum-Wert für den Compiler in Konflikt gerät mit einem Klassennamen.</p>
</blockquote>
<p>Weil in c++ ein enum AFAIK kein Typ darstellt. In C++0x/C++11 gibt es &quot;enum class&quot; dann hast du einen konkreten tyy.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253703</guid><dc:creator><![CDATA[firefly]]></dc:creator><pubDate>Sun, 23 Sep 2012 10:51:38 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler:&#x27;p&#x27; was not declared in this scope on Sun, 23 Sep 2012 17:20:13 GMT]]></title><description><![CDATA[<p>firefly schrieb:</p>
<blockquote>
<p>Weil in c++ ein enum AFAIK kein Typ darstellt. In C++0x/C++11 gibt es &quot;enum class&quot; dann hast du einen konkreten tyy.</p>
</blockquote>
<p>Wieso sollte ein enum keinen Typen definieren? Wenn es kein Typ wäre, könntest du doch auch kein Objekt davon erzeugen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253784</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sun, 23 Sep 2012 17:20:13 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler:&#x27;p&#x27; was not declared in this scope on Sun, 23 Sep 2012 17:50:09 GMT]]></title><description><![CDATA[<p>Zeeke schrieb:</p>
<blockquote>
<p>Doch weiß man als Laie nicht immer was nun Rätselraten ist, oder was für einen Geübten einfach genannt werden kann.</p>
</blockquote>
<p>Und genau deshalb sollst du auch Code posten, der das beobachtete Verhalten auch zeigt. Ganz sicher ist es unmöglich, den Fehler zu finden, wenn der relevante Code unbekannt bleibt.</p>
<p>Zeeke schrieb:</p>
<blockquote>
<p>Mir war nicht klar, dass ein solcher Enum-Wert für den Compiler in Konflikt gerät mit einem Klassennamen.</p>
</blockquote>
<p>Ein Erbe aus C.<br />
Eine Klasse- oder Aufzählungsname kann im gleichen Scope durch die Deklaration einer Funktion, eines Objekts oder einer Aufzählungskonstanten verdeckt werden.<br />
Durch Verwendung des entsprechenden Schlüsselwortes kann in solchen Situationen trotzdem auf den Klassennamen zugegriffen werden.</p>
<pre><code class="language-cpp">class Product p;
</code></pre>
<p>Besser ist es allerdings, die Namenskollision von vornherein zu vermeiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253792</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 23 Sep 2012 17:50:09 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler:&#x27;p&#x27; was not declared in this scope on Sun, 23 Sep 2012 22:54:58 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>firefly schrieb:</p>
<blockquote>
<p>Weil in c++ ein enum AFAIK kein Typ darstellt. In C++0x/C++11 gibt es &quot;enum class&quot; dann hast du einen konkreten tyy.</p>
</blockquote>
<p>Wieso sollte ein enum keinen Typen definieren? Wenn es kein Typ wäre, könntest du doch auch kein Objekt davon erzeugen.</p>
</blockquote>
<p>Es geht nicht um den Enum an sich, sondern um einen Wert innerhalb des Enums! Das finde ich nicht so klar.</p>
<p>camper schrieb:</p>
<blockquote>
<p>Zeeke schrieb:</p>
<blockquote>
<p>Doch weiß man als Laie nicht immer was nun Rätselraten ist, oder was für einen Geübten einfach genannt werden kann.</p>
</blockquote>
<p>Und genau deshalb sollst du auch Code posten, der das beobachtete Verhalten auch zeigt. Ganz sicher ist es unmöglich, den Fehler zu finden, wenn der relevante Code unbekannt bleibt.</p>
</blockquote>
<p>Stimmt, hätte hier geholfen ;).</p>
<p>camper schrieb:</p>
<blockquote>
<p>Zeeke schrieb:</p>
<blockquote>
<p>Mir war nicht klar, dass ein solcher Enum-Wert für den Compiler in Konflikt gerät mit einem Klassennamen.</p>
</blockquote>
<p>Ein Erbe aus C.<br />
Eine Klasse- oder Aufzählungsname kann im gleichen Scope durch die Deklaration einer Funktion, eines Objekts oder einer Aufzählungskonstanten verdeckt werden.<br />
Durch Verwendung des entsprechenden Schlüsselwortes kann in solchen Situationen trotzdem auf den Klassennamen zugegriffen werden.</p>
<pre><code class="language-cpp">class Product p;
</code></pre>
<p>Besser ist es allerdings, die Namenskollision von vornherein zu vermeiden.</p>
</blockquote>
<p>Dankeschön für den Hinweis. Ich habe die Enum-Werte nun aber besser mit einem Präfix versehen.</p>
<p>Ich denke die Sache ist hiermit geklärt.</p>
<p>VG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253854</guid><dc:creator><![CDATA[Zeeke]]></dc:creator><pubDate>Sun, 23 Sep 2012 22:54:58 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler:&#x27;p&#x27; was not declared in this scope on Sun, 23 Sep 2012 23:09:37 GMT]]></title><description><![CDATA[<p>Zeeke schrieb:</p>
<blockquote>
<p>Dankeschön für den Hinweis. Ich habe die Enum-Werte nun aber besser mit einem Präfix versehen.</p>
</blockquote>
<p>Ich finde Namenspaces schöner <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/2253856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253856</guid><dc:creator><![CDATA[sinoda rückwärts]]></dc:creator><pubDate>Sun, 23 Sep 2012 23:09:37 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler:&#x27;p&#x27; was not declared in this scope on Mon, 24 Sep 2012 06:05:46 GMT]]></title><description><![CDATA[<p>Zeeke schrieb:</p>
<blockquote>
<p>out schrieb:</p>
<blockquote>
<p>firefly schrieb:</p>
<blockquote>
<p>Weil in c++ ein enum AFAIK kein Typ darstellt. In C++0x/C++11 gibt es &quot;enum class&quot; dann hast du einen konkreten tyy.</p>
</blockquote>
<p>Wieso sollte ein enum keinen Typen definieren? Wenn es kein Typ wäre, könntest du doch auch kein Objekt davon erzeugen.</p>
</blockquote>
<p>Es geht nicht um den Enum an sich, sondern um einen Wert innerhalb des Enums! Das finde ich nicht so klar.</p>
</blockquote>
<p>Der <strong>einzige</strong> Unterschied zwischen normalen Enumerationen und scoped enumerations ist, dass bei letzterem</p>
<ul>
<li>die Enumeratoren nicht implizit in einen integralen Skalar konvertieren werden können</li>
<li>die Enumeratoren nicht einfach angesprochen werden dürfen, sondern wie bei Namensräumen durch den Namen der Enumeration.</li>
</ul>
<p>Es sind aber beides Typen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253867</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Mon, 24 Sep 2012 06:05:46 GMT</pubDate></item></channel></rss>