这是我唯一能想到的。东西是有感觉的。
我有一个结构如下:
struct NumPair
{
wchar_t *pFirst, *pSecond;
int count;
使用 ctor,复制分配和构造为
NumPair( wchar_t *pfirst, wchar_t *psecond, int count = 0)
NumPair( const NumPair& np )
NumPair& operator=( const NumPair& np )
这是我上一个问题的扩展,在该问题中我要求一种方法来对字符指针列表进行排序,其中包含特殊(德语)字符,例如ü, ä, ö
.
该解决方案似乎使用宽字符类型,但由于某种原因,编译器抛出了一百多个转换错误。
样本输入:
// dict_ is a container of NumPairs.
dict_.push_back( NumPair ( "anfangen", "to begin, to start" ) );
编译器抱怨它无法将 a 转换const char *
为 a wchar_t
。很好,我改变 push_back 说
dict_.push_back( NumPair ( wchar_t("anfangen"), wchar_t("to begin, to start") ) );
编译器错误:找不到接受所有参数的 NumPair ctor。
什么。这。地狱。我尝试了完全重建,认为我的 VSC++10 搞砸了。不,你猜不是。
我究竟做错了什么?
代码
ctor、赋值和复制构造都是 wchar_t 指针的深层副本,如下所示。
wchar.h 包括在内。
NumPair( wchar_t *pfirst, wchar_t *psecond, int count = 0)
: count(count)
{
size_t s1, s2;
s1 = wcslen(pfirst);
s2 = wcslen(psecond);
pFirst = new wchar_t[s1];
pSecond = new wchar_t[s2];
wcscpy(pFirst, pfirst);
wcscpy(pSecond, psecond);
}