error C2248: “CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)此诊断出现在编译器生成的函数“CDC::CDC(const CDC &)

onPaint中内容太多,我就想把部分代码封装成函数,直接调用,然后里面用到了CPaintDC dc,然后我就直接传进去了,然后就报错了:

1>c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afxwin.h(1018): error C2248: “CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(535) : 参见“CObject::CObject”的声明
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(510) : 参见“CObject”的声明
1>          此诊断出现在编译器生成的函数“CDC::CDC(const CDC &)”中

我查了一下:

  1. 错误原因:你尝试拷贝构造一个CDC对象,但CDC类的拷贝构造函数被禁用了。这是因为CDC对象包含操作系统资源(如设备上下文句柄),不允许直接拷贝。

改一下传入方式就行了:

原代码:

void CAreaDialog::DrawHJL(CPaintDC dc,CRect rectBackground)

改后:

void CAreaDialog::DrawHJL(CPaintDC& dc,CRect rectBackground)

重新编译,ok!

特此留下文档,为碰上同样问题的渣滓们共勉 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值