1

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

4

1 に答える 1

0

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

于 2011-01-10T16:51:26.447 に答える