-3

実際、私は実際に質問のためにここにいるのではなく、何時間にもわたって私を夢中にさせた問題を共有するためにここにいます。

ほとんどの場合、エラー'expected unqualified-id [...]'の古典的な解決策は、クラス宣言の最後にセミコロンがないことです。ここではそうではありません。

それでは、何が起こったのかを説明しましょう。同僚によって開発されたいくつかのオブジェクトと、ソフトの他の部分によってすでに使用されているソースのクラスが必要でした。だから私はそれが機能していて使用可能であることを知っています。だから私は自分のmakefileとincludesを変更し、再コンパイルしてブームしました。

foob​​ar.hh:81:エラー:「保護された」前に非修飾IDが必要です

似たようなmakefileと環境を持つ同僚とほとんど同じものを含めていたので、問題を理解できませんでした。しかし最後に、大きな違いが見つかりました。私はQTを使用しており(GUIを開発しているため)、エラーが発生したコンパイラーによってポイントされたメソッドはすべて「シグナル」という名前でした。

完全な説明はありませんが、メソッド名を別の名前に変更しただけで、機能しています。QTユーザーの場合、シグナルはシグナル/スロットメカニズムに使用される特定のQTワードであることをご存知ですが、それでも多くの時間を失いました。誰かが私が興味を持っている問題を正確に説明できるなら、私はこの簡単な回避策をあなたと共有したいと思いました(そしてstackoverflowが過去の長い時間で私を助けたので)。

よろしく、Ikwy

4

1 に答える 1

3

signalsQtの親切なキーワードです。この名前をQtの識別子として使用することはできません。この名前で関数や変数を宣言することはできません。

  • 識別子の名前を変更するだけです。
  • または、Qtキーワードを無効にしてプロジェクトを作成することもできますが、それらのキーワードがプロジェクトでQtの意味で使用されていないことを確認する必要があります。(そしておそらくそうです)。キーワードを無効にするには、オプションを有効にしてプロジェクトを作成する必要があります(を使用qmakeすると仮定)CONFIG += no_keywords
于 2013-01-11T16:55:26.373 に答える