扩展类,委派运算符和分配?

Extending a class, delegating operators and assignment?

本文关键字:分配 运算符 委派 扩展      更新时间:2023-10-16

简而言之...在我的应用程序中,我们经常使用boost::filesystem::path。它大多运行良好,除非有人决定可爱并在窗口中引用非 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)) {};
}

当然,我没有考虑到所有的各种任务和这样的运算符。

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

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

虽然我不熟悉这一点,但似乎有一些支持codec_cvt。