C++程序报错:不能将参数 1 从“void”转换为“const VARIANT &”

这是一个换算byte程序,换算完成的结果通过temp传递,不知道哪里出错了?CStringCFTPDlg::convertFileSize(CString&temp,lo... 这是一个换算byte程序,换算完成的结果通过temp传递,不知道哪里出错了?

CString CFTPDlg::convertFileSize( CString &temp,long size) {
long kb = 1024;
long mb = kb * 1024;
long gb = mb * 1024;
if (size >= gb) {
return temp.Format(_T("%.1f GB"),(float) size / gb);//================在这一行报错
} else if (size >= mb) {
float f = (float) size / mb;
return temp.Format(f > 100 ?"%.0f MB":"%.1f MB", f);;//================在这一行报错
} else if (size >= kb) {
float f = (float) size / kb;
return temp.Format(f > 100 ?"%.0f KB":"%.1f KB", f);;//================在这一行报错
} else
return temp.Format("%d B", size);
}
=====================报错信息===========================================

1>c:\users\s\documents\visual studio 2010\projects\ftp 2 - 副本\ftp\ftpdlg.cpp(191): error C2664: “ATL::CStringT<BaseType,StringTraits>::CStringT(const VARIANT &)”: 不能将参数 1 从“void”转换为“const VARIANT &”
展开
 我来答
HelloLyhZiFu
2015-04-20
知道答主
回答量:13
采纳率:0%
帮助的人:4.3万
展开全部
对应的参数要求是常引用 const VARIANT &

所以,你传一个临时变量或者常数值是不行的
你把要传给Format的第一个参数都赋给一个变量,再把这个变量传给Format,这样作为常引用就不会报错,引用要求有具体的被引用的变量,这变量不能是临时变量,否则引用就会失效,所以编译器报错

另外, 编译器说你传的参数1是void型,我估计要么_T()函数返回的是void,要么你的后两次Format的第一个参数这样传递不合适,希望对你有帮助。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式