【发布时间】:2019-03-25 07:21:27
【问题描述】:
我正在将一个双精度值复制到一个 Void*。我如何在 C++ 中做到这一点。
目前我已经在 C++10 中尝试过
strcpy(Trade->MtTr.MPData->MPTrXML.da,dCou);
Trade->MtTr.MPData->MPTrXML.da-->这是一个虚空*
dCou 是双倍的。
strcpy(Trade->MtTr.MPData->MPTrXML.da,dCou);
我希望 void* 应该包含双精度值。 实际上我得到的错误是:
error C2665: 'strcpy' : 2 个重载都不能转换所有参数类型
在尝试匹配参数列表时 '(void *, double)'
【问题讨论】:
-
你想用
void*达到什么目的? -
你一定在做一些非常不寻常的事情。请告诉我们更多信息。
-
C++ 是一种严格的类型检查语言,如果没有(通常是功能不良的)强制转换,这种转换不是自动的。
-
我能想到这样的一个原因是,如果处理一些使用
void *作为通用类型的低级CAPI。否则,我看不出在纯 C++ 应用程序中可以/应该在哪里使用它。 -
@DanielKamilKozar:真的不好的是
strcpy二进制数据。即使在 C 语言中,在 double 上调用strcpy也表明完全缺乏理解。strcpy最多复制并包括第一个空字节,它可能存在也可能不存在于double中。如果不是,则您的内存读取越界,即未定义行为。如果第一个 null 不在 double 的末尾,则只复制它的一部分,接收器将失败。
标签: c++ visual-c++