const std::string &を返すクラスメソッドをconst boost::interprocess::basic_string &に置き換えようとしています。私が直面している主な課題は、実装が類似しているにもかかわらず、2 つのクラス間の非互換性です。より明確な説明のために、それをコードに入れます
class A
{ std::string m_str;
const std::string & StrVal() { return m_str; }
}
このクラスは次のようになります。
typedef boost::interprocess::allocator<char,boost::interprocess::managed_shared_memory::segment_manager> ShmemAllocatorChar;
typedef boost::interprocess::basic_string<char, std::char_traits<char>,ShmemAllocatorChar> ShMemString;
class A
{
ShMemString m_str;
const ShMemString & StrVal() { return m_str; }
}
問題は、これに依存する巨大なコード ベースがあることです。
A a;
const std::string & str = a.StrVal();
// Many string specific operations go here, comparing str with other std::strings for instance
予想される結果を const ShMemString & に置き換えてすべてのコードを調べたとしても、その後の使用法も修正するのはさらに困難な作業になります。ブーストの文字列に std::string からの比較/構築メソッドが含まれていないことに驚きました。
これにアプローチする方法についてのアイデアはありますか?