Je travaille sur une classe Brigde pour travailler avec une bibliothèque C++ non gérée. J'ai un problème avec les éléments suivants (réduit) exemple de code:L'attribut d'objet Marshall génère une erreur de compilation
ref class ManagedClass
{
private:
UnManagedClass* m_UnManaged;
String^ m_someString;
public:
UserAgent_Managed(String^ someString)
{
m_someString = someString;
// Compiler error
// Severity Code Description Project File Line Suppression State Error C2665 'msclr::interop::marshal_as': none of the 3 overloads could convert all the argument
// types
std::string unManagedString = msclr::interop::marshal_as<std::string>(m_someString);
// Following works
// std::string unManagedString = msclr::interop::marshal_as<std::string>(someString);
m_UnManaged = new UnManagedClass(unManagedString);
}
};
Quand j'appelle std::string unManagedString = msclr::interop::marshal_as<std::string>(m_someString);
avec l'attribut d'objet m_someString
, le compilateur me dit qu'il n'y a pas marshal_as
signature de la méthode correspondant. Si j'effectue la même chose avec le paramètre someString
, le compilateur ne génère pas d'erreur. Qu'est-ce que je rate? Les deux m_someString
et someString
ont le type String^
.
Thx
Essayé, fonctionne. Merci pour la réponse rapide. – Moerwald