【发布时间】:2013-01-15 19:15:31
【问题描述】:
基本上,我有一个大型项目,它使用继承自 std::basic_string<char> 的自定义实用程序类 c_string。出于多种原因,我想编辑这个类,以便
- 它不是从
std::basic_string<char>派生的 - 我不必重新实现所有功能
- 我不必触摸每个使用
c_string的文件
所以我想改变:
class c_string : public std::basic_string<char>
{
public:
typedef std::basic_string<char> Base;
c_string() : Base() {}
}
收件人:
class c_string
{
...
public:
...
c_string() {...}
}
所以,我想知道是否有人有一个很好的策略来进行这种影响最小的改变。
【问题讨论】:
-
那么你为什么不想从basic_string派生?是不是标题把你搞砸了?
-
@NathanMonteleone:标准库类型并不意味着继承,至少不是公共继承......
-
@NathanMonteleone 我的情况的明显问题是从 v90(工作)到 v100 编译器导致 npos 在链接时成为未解析的外部符号
-
@zdp 你也许可以解决这个问题。是在抱怨 basic_string
::npos 还是 c_string::npos?
标签: c++ inheritance stl stdstring