给定的
#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时,还需要哪些特殊化才能进行编译?
发布于 2011-11-28 16:12:08
除了标准要求的两个专门化:codecvt<wchar_t, char, mbstat_t>和codecvt<char, char, mbstate_t>之外,codecvt很可能从未实现过。很难有一个通用的方法来进行编码转换。因此,如果您希望使用自己模板专门化,您可能必须自己实现codecvt的每个函数(可能包括它的基类)。
https://stackoverflow.com/questions/8292775
复制相似问题