2011-01-10 22 views
1

これはおそらく私が最近見た中で最も奇妙なことであり、これがどのように起こる可能性があるのか​​不思議であった。コンパイラは、戻り値の型として使用されたときにstd :: stringが未定義であると言ってエラーを出しましたが、クラスのメソッドではパラメータとして使用されていませんでした。まだ私はきれいなソリューションを選択し、再編成する宇宙用の後、再びすべてを再構築しなければならなかったが起こった再構築のすべてをやってstd :: stringでVisual Studio 2010のコンパイルエラーが発生しましたか?

#pragma once 
#include <string> 
#include <vector> 

// forward declarations 
class CLocalReference; 
class CResultSetHandle; 

class MyClass 
{ 
public: 
MyClass() {} 
~MyClass {} 

void Retrieve(const CLocalReference& id, CResultSetHandle& rsh, std::string& item); // this is fine 
const std::string Retrieve(const CLocalReference& id, CResultSetHandle& rsh); // this fails with std::string is undefined?!?! 
}; 

。それが瞬時に解決されましたが、何が起こったのかも知りたいのですが、STLに常に完全な名前を使用すると、特に競合が発生しないようにする必要があるのはなぜですか?

+0

元のエラーを貼り付けてください。 –

+0

デストラクタは でなければなりません。〜MyClass(){} ' それ以外は、私のためにうまくコンパイルします。私はそれがVS2010のバグだと思いますが、エラーはあなたのコードのどこかにあります。 (あなたも知っている* Microsoft *でもバグが発生する!!) – Oystein

+0

コンパイラはどのようなエラーを報告しますか?問題を再現できますか?再現できない場合は、何らかの事態が発生している可能性があり、コンパイラの欠陥ではない可能性があります。 –

答えて

0

これはおそらくコンパイラのバグです。私はVS2010のいくつかを見ました。

+0

特に、特定のヘッダーファイルを変更すると、他にはありません。 –