请问VC7中如何正确声明一个类的拷贝构造函数。

sproll 2005-01-12 02:21:22
我写了一个继承自CStatic的类:

class CDisplay : public CStatic
{
DECLARE_DYNAMIC(CDisplay)

public:
CDisplay();
CDisplay(CDisplay &clsTemp);
virtual ~CDisplay();
。。。
。。。
。。。
这个类的拷贝构造函数是这样的:
CDisplay::CDisplay(CDisplay &clsTemp)
{
return;
}
但是当我在主窗口类中向向量中添加这个类的实例后:
vector<CDisplay> m_pclsDisplay;
CDisplay clsTemp;
m_pclsDisplay.assign(16, clsTemp);
编译出错,提示说:
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\vector(764): error C2558: class“CDisplay” : 没有可用的复制构造函数或复制构造函数声明为“explicit”


...全文
119 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sproll 2005-01-13
  • 打赏
  • 举报
回复
谢谢各位,但是好像都不行。
我测试了一下,如果我编写的不是继承自MFC的类,那么这样编译都没问题:

class CTTT
{
public:
CTTT(void);
~CTTT(void);
};

void CDlgTestDlg::OnBnClickedOk()
{
CTTT clsT;
CTTT clsS = clsT;//调用默认的拷贝构造函数
CTTT clsR;
clsR = clsT;//调用默认的赋值运行符操作
}
我觉得可能是MFC的原因。
菲斯可儿 2005-01-12
  • 打赏
  • 举报
回复
没错,使用运算符重载就OK了。
kingzai 2005-01-12
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/vcrefExplicit.asp
delphihero 2005-01-12
  • 打赏
  • 举报
回复
重载一个 Operator=(CDisplay &clsTemp)运算符。

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧