简而言之……在我的应用中,我们大量使用boost::filesystem::path
。多数情况下,它工作得很好,除了有人决定要可爱并在Windows中引用非Unicode文件名外(例如,由于某种原因我无法理解,有人拥有Shift-JIS文件名)。
namespace fs = boost::filesystem;
class utf8Path : public fs::path {
public:
utf8Path () : fs::path () {};
utf8Path (std::string path) : fs::path(UnicodeUtil::convertToUTF8(path)) {};
}
当然,我没有考虑所有的各种分配和此类运算符。
假设我上面写的是有道理的,并且代码没有损坏……是否有可能将此方法扩展到其他版本的构造函数,赋值运算符等?
答案 0 :(得分:0)
当组合同样好或不重写任何虚拟方法时,继承通常是一个错误的设计选择。 在所提供的示例中,几乎没有理由证明新类是合理的。只需在需要的地方调用转换即可,而无需使用“ utf8path”。
尽管我对此并不熟悉,但似乎对codec_cvt有所支持。