首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当第三个模板参数不是std::mbstate_t时,专门化codecvt:链接器错误

当第三个模板参数不是std::mbstate_t时,专门化codecvt:链接器错误
EN

Stack Overflow用户
提问于 2011-11-28 15:46:53
回答 1查看 932关注 0票数 1

给定的

代码语言:javascript
复制
#include <locale>

struct Q;
struct R{ void operator()(Q*) { } };
class S : public std::codecvt<char, char, Q*> { } ;

int main() {
    char *p;
    char *q;
    const char *r;
    char *s;
    char *t;
    char *u;
    Q* _q;
    std::use_facet<std::codecvt<char, char, Q*> >(std::locale(std::locale::classic(), new S)).in(_q, p, q, r, s, t, u);
}

链接器随消息一起消亡

Std::codecvt+0x50的vtable ):未定义对“std::codecvt::do_max_length()const”的引用,对所有codecvt do_*成员重复此引用,并且

S+0x20的vtable ):对'std::codecvt::do_out(Q*&,char const*,char const*,char const*&,char*,char*,char*&) const‘的引用未定义,对所有do_*成员函数重复。

当StateT不是std::mbstate_t时,还需要哪些特殊化才能进行编译?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-28 16:12:08

除了标准要求的两个专门化:codecvt<wchar_t, char, mbstat_t>codecvt<char, char, mbstate_t>之外,codecvt很可能从未实现过。很难有一个通用的方法来进行编码转换。因此,如果您希望使用自己模板专门化,您可能必须自己实现codecvt的每个函数(可能包括它的基类)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8292775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档