gpt4 book ai didi

c++ - 专门化 codecvt:当第三个模板参数不是 std::mbstate_t 时出现链接器错误

转载 作者:行者123 更新时间:2023-11-30 02:06:59 26 4
gpt4 key购买 nike

给定

#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 的 vtable]+0x50):对“std::codecvt::do_max_length() const”的 undefined reference ,对所有 codecvt do_* 成员重复,和

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

当 StateT 不是 std::mbstate_t 时,编译工作还需要哪些特化?

最佳答案

很有可能codecvt除了标准要求的两个专业之外从未实现:codecvt<wchar_t, char, mbstat_t>codecvt<char, char, mbstate_t> .很难有一个通用的编码转换方式。所以如果你想使用自己的模板特化,你可能必须实现 codecvt 的每个功能。 (也许包括它的基类)你自己。

关于c++ - 专门化 codecvt:当第三个模板参数不是 std::mbstate_t 时出现链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8292775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com