警告C4238:使用了非标准扩展:类右值用作左值
warning C4238: nonstandard extension used : class rvalue used as lvalue
这里是我的代码
if(bSelected)
{
clrTextSave=pDC->SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
clrBkSave=pDC->SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));
pDC->FillRect(rcAllLabels,&CBrush(::GetSysColor(COLOR_HIGHLIGHT)));
}
else
pDC->FillRect(rcAllLabels,&CBrush(m_clrTextBk));
当我在Visual studio 2008上编译时,它会给我:警告C4238:使用了非标准扩展:类右值用作左值我不知道如何修复这个警告?有人帮忙吗?非常感谢。
您收到警告(这应该是一个错误,因为您应该始终使用最高警告级别编译代码),因为您正在创建一个临时的并使用它的地址。为了防止此警告,您需要创建一个本地变量:
if(bSelected)
{
clrTextSave = pDC->SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
clrBkSave = pDC->SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));
CBrush brush(::GetSysColor(COLOR_HIGHLIGHT)); // create a local variable
pDC->FillRect(rcAllLabels, &brush); // use its address
}
else
{
CBrush brush(m_clrTextBk); // same thing here
pDC->FillRect(rcAllLabels, &brush);
}
相关文章:
- C4204:使用的非标准扩展:非常量聚合初始值设定项
- 在双重继承的情况下如何处理非标准构造函数
- CMake 不编译具有非标准扩展名的文件
- 定义具有非标准签名的自定义映射比较器
- 我想获取点的属性,它报告错误 C3867:"point::output_x":非标准语法;使用"&"创建指向成员的指针
- 非标准语法,使用 & 创建指向成员的指针
- 在Qt中链接具有非标准名称的lib文件
- 非标准语法使用 '&' 创建指向成员 C++ 的指针
- WINAPI EnumWindowsProc:非标准语法;使用 & 创建指向成员的点
- Vulkan-hpp 是reinterpret_casting非标准布局类到另一个类.这合法吗?
- 'cv::Mat::type':非标准语法;使用 '&' 创建指向成员的指针
- registerPointPickingCallback (PCLViewer::callback_Test,(void*)&viewer);返回 C3687 非标准语法;使用"&"创建指向成员的指针
- 错误 C4839:非标准地使用类 'ATL::CW2AEX<520>' 作为可变参数函数的参数
- C++ Visual Studio 2015:非标准语法;使用 '&' 创建指向成员的指针
- 非标准语法;使用 & 创建指向成员的指针
- Visual Studio 2015"非标准语法;使用"&"为成员创建指针"
- 如何将 Boost 库与 CMake 链接(如果 boost 位于非标准位置,则在集群上)?
- Cmake在非标准路径中找到OpenSSL库
- 非标准语法;使用 '&' 创建指向成员的指针错误,将成员函数分配给向量时出错
- 警告C4238:使用了非标准扩展:类右值用作左值