2013-05-02 12 views
10

私は、次のヘッダファイルがあります:不明なタイプ名クラス

https://gist.github.com/wemakeweb/5501443

と、コンパイラは常に 「未知のタイプ名クラス」を報告します。私はForward Declarationを含めて循環を壊すことを含んでいました。どこにいるかと思います。私は何を忘れましたか?

編集:私は1つのヘッダファイルにすべてを入れて、コンパイラは、まだ「期待;トップレベルの宣言子の後に」報告

https://gist.github.com/wemakeweb/5583500

編集2 今リンカエラーが発生してイム。 "アーキテクチャx86_64のための未定義シンボルは"

を解決、問題ではなく、実際のコードではなかった静的libにあっmain.cppに

    1. 丸含む
    2. main.cのました適切にリンクされています
  • +2

    この例のどの行ですか?あなたはどのコンパイラを使用していますか、どのコンパイルオプションを使用していますか? –

    +1

    あなたはあなたが得ているilnkerエラーを表示していません。人々があなたのことを解決するのを手助けしたいなら、あなたはもっと頑張らなければなりません。 – Roddy

    +1

    ええ、あなたが正しいです、私はリンクエラーを投稿しました。 –

    答えて

    17

    このエラーは? error: unknown type name ‘class’

    おそらくC++ではなくCとしてコンパイルしていると思います。

    ソースファイルのファイル拡張子が.cppで、関連するコンパイラフラグが正しく設定されていることを確認してください。 (正確なエラーメッセージと行番号を含めると役立ちます。再試行しないで、ちょうどカット+ペーストしてください)

    +1

    ヘッダーファイルの最初のエラーは "予期されたもので、トップレベルの宣言者の後" –

    +2

    @SepOSepはいどの行番号とファイルですか?ヘッダファイルに何も問題はないので、それをインクルードしようとしているcppソースも表示してください。あなたは* .cppファイルを持っていますか? – Roddy

    +1

    はい、それはmain.cファイルで、main.cppに変更されました。 Imはリンカエラー "アーキテクチャx86_64の未定義のシンボル"と戦っています。 –

    6

    Feld.hFigur.hの間に少なくとも1つの循環インクルード依存関係があります。ヘッダーをインクルードすると、前方宣言は無効になります。インクルードを削除するだけです。

    +1

    は私の質問を編集しました –

    関連する問題