【问题标题】:std::basic_string specializationstd::basic_string 特化
【发布时间】:2011-07-01 11:39:26
【问题描述】:

我只需要覆盖 std::basic_string 中的 length 函数,因为它对于特定平台上的自定义 char 类型不正确。这是 CustomString 的当前声明

typedef STL::basic_string<CustomChar, STL::char_traits<CustomChar>, STL::allocator<CustomChar> > CustomString;

我需要有一个行为类似于 CustomString 的类,但改变了长度函数。

【问题讨论】:

  • 没有STL::basic_string 这样的东西。也许你的意思是std::basic_string
  • @Nicol Colas,我忘记改了,是std的别名
  • @Nicol Bolas - 我明白为什么你会想使用这样的别名,但是...... ewww!这几乎与使用 beginend 代替 {} 以及将 := 宏化为 = 以使您的代码看起来像 Pascal 一样令人困惑。

标签: c++ templates


【解决方案1】:

您需要专门化 std::char_traits 结构并覆盖其 static size_t length(const char_type* s); 函数才能做到这一点。

那么在实例化basic_string 时,您甚至不需要指定所有模板参数。下面的定义就足够了:

typedef std::basic_string<CustomChar> CustomString;

【讨论】:

    猜你喜欢
    • 2015-07-23
    • 2021-04-07
    • 2015-04-28
    • 1970-01-01
    • 2018-03-11
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多