ですから、これはおそらく私が最近見た中で最も奇妙なことであり、これがどのように起こり得るのか興味がありました。コンパイラは、戻り型として使用された場合はstd :: stringが未定義であるが、クラスのメソッドでパラメータとして使用された場合は定義されていないというエラーを出しました。
#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に完全修飾名を常に使用している場合に、競合が発生しない理由がわからないため、これを引き起こした原因を知りたいと思います。