カスタム クラスを、VS2005 で非常によくコンパイルされる文字列にキャストしたいと考えています。しかし、VS2012 ではコンパイラ エラーが発生しますerror C2440: 'type cast' : cannot convert from 'A' to 'std::string'
。何を変更する必要がありますか? これは私の例です:
#include <string>
using namespace std;
class A
{
public:
A& operator=(const char* c);
operator string ();
operator const char* ();
private:
string value;
};
A::operator string () { return string((const char*)(*this)); }
A& A::operator = (const char* aValue) { value = aValue; return *this; }
A::operator const char *() { const char* wort = "Hello"; return wort; }
int main()
{
A a;
string s = (string)a; // C2440
}