私はちょうどこのエラーを受け取っていました:「エラー: 'Symbol' は型に名前を付けていません」
循環依存関係について話している他のいくつかの StackOverflow の質問を見つけましたが、ここではそうではありません。実際、これをソースファイルの先頭に置くことで再現できました:
class Symbol{int dummy;};
//class Symbol{int again;};
Symbol global_symbol;
これにより、3 行目に「エラー: 'Symbol' に型の名前がありません」と表示されます。2行目のコメントを外しても、同じエラーが表示されますが、その直前に「エラー:「クラスシンボル」の再定義」が表示されます!!
さらにいろいろ調べてみると、サードパーティのライブラリにenum
whereSymbol
が定義されているように見えます。そのライブラリも私自身のコードも名前空間を使用していないため、コードを名前空間内に移動することはすでにやることリストにあったので、次にそれを行い、問題が解決することを願っています.
class Symbol{}
しかし、私を混乱させているのは、なぜ回線でエラーが発生しなかったのですか? 列挙型と競合する場合、そのクラスをインスタンス化できないほどである場合、なぜ文句を言わなかったのですか? g++
のフラグがないか、C++ の知識にギャップがあるように感じます。これはバグではなく機能だと誰かに言われるのを待っています。
(ところで、私が使用g++ -c -std=gnu++0x -Wall -g -Werror ...
しているのはg ++ 4.8.1です)