0

名前空間での列挙の使用に問題があります。

以下は関数呼び出しです。

object->writeMessage(tmpZone->getLineOne(), tmpZone->getLine(), tmpZone->getPosition());

コンパイラからの問題は

tmpZone->getLine()

Zoneクラス(insight名前空間にある)からのgetLine()のプロトタイプは次のとおりです。

Line getLine();

これは、Insight名前空間で列挙型を返します。この関数呼び出しは、using名前空間インサイトの下のcppファイルにあります。ライン。

コンパイラエラーは

C:/WindRiver/workspace/SimpleTemplate/InsightLT.cpp:静的メンバー関数static int insight::InsightLT::taskFunction(insight::InsightLT*)': C:/WindRiver/workspace/SimpleTemplate/InsightLT.cpp:161: error: no matching function for call to insight :: InsightLT :: writeMessage(std :: string、Line、int)'C:/WindRiver/workspace/SimpleTemplate/InsightLT.cpp:82:注:候補は次のとおりです。voidinsight :: InsightLT :: writeMessage(std :: string、insight :: Line、int)

なぜこれが起こっているのか私には考えられません。Zoneクラスは、Insight名前空間でも定義されています。アイデアはありますか?

4

2 に答える 2

1

コンパイラはLineから解決できません。insight namespace関数定義で完全な名前空間を指定し、cppを内部にラップすることもできますnamespace insight

試す:

namespace insight {
  void InsightLT::writeMessage(std::string, insight::Line, int)
  {    
  }
}
于 2013-01-25T00:40:37.087 に答える
0

なぜ私が何をしたのかはわかりませんが、これをコンパイルすることができました。完全性と閉鎖性のために、私はそれをここに置きたかったのです。

別のクラスとともに、名前空間スコープ内のLine列挙型と別の列挙型を宣言していました。列挙型を削除し、以前と同じ名前空間内の独自のヘッダーファイルに配置すると、コンパイルされるようになりました。

これで問題が解決したので、何が欠けていたのかわかりません。誰かが考慮事項がある場合は、これが修正された可能性があることについてコメントしてください。

助けてくれて申し訳ありませんが、エラーが表示された例をまとめることができませんでした。

于 2013-01-25T21:05:22.687 に答える