0

简而言之......在我的应用程序中,我们使用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)) {};
}

当然,我并没有考虑到所有各种分配和此类运算符。

假设我上面写的内容是有意义的并且没有损坏代码......是否可以将这种方法扩展到其他版本的构造函数、赋值运算符等?

4

1 回答 1

0

当组合同样好或不覆盖任何虚方法时,继承通常是一个糟糕的设计选择。在提供的示例中,它首先很难证明新类的合理性。只需在需要的地方调用转换,而不是使用“utf8path”。

虽然我对此并不熟悉,但似乎对 codec_cvt 有一些支持。

于 2018-09-12T08:05:24.430 回答