首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

100分,您懂的,基类竟然把拷贝,operator=给私有了

2012-08-17 
100分,你懂的,基类竟然把拷贝,operator给私有了C/C++ code“CAsyncSocket::CAsyncSocket”: 无法访问 priva

100分,你懂的,基类竟然把拷贝,operator=给私有了

C/C++ code
“CAsyncSocket::CAsyncSocket”: 无法访问 private 成员(在“CAsyncSocket”类中声明)1>          d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afxsock.h(104) : 参见“CAsyncSocket::CAsyncSocket”的声明1>          d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afxsock.h(100) : 参见“CAsyncSocket”的声明1>          此诊断出现在编译器生成的函数“CClientSock::CClientSock(const CClientSock &)”中1>1>生成失败。1>1>已用时间 00:00:03.93========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========class CMyServerDlg ;/////////////////////////////////////////////////////////////////////////////// CClientSock command targetclass CClientSock : public CAsyncSocket{public:    CClientSock();    virtual ~CClientSock();    void SetDlg(CMyServerDlg* pDlg);public:    virtual void OnConnect(int nErrorCode);    virtual void OnReceive(int nErrorCode);    virtual void OnClose(int nErrorCode);    CMyServerDlg* m_pDlg;    //DECLARE_MESSAGE_MAP()};///////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCATION}}// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_CLIENTSOCK_H__A80C259D_F59B_4079_AC2F_5E18FA850C77__INCLUDED_)



错误已经提示了,很是奇怪。怎么会出错呢,不应该啊。


看这一行

on_line_userMap.insert(std::make_pair(onlineUser.UserId,onlineUser));//添加到在线用户表中

原型为:std::map<std::string, COnLineUser> on_line_userMap;//在线用户


#pragma once
#include "ClientSock.h"
#define USER_ID_LEN20

class COnLineUser
{
public:

public:
char UserId[USER_ID_LEN];//用户id
time_t theLastTalkTime;//最后发言时间 
CClientSocksock; 这里用过了,看到没有,我查看器父类CAsyncSocket类貌似是把operator=给 private了,

public:
COnLineUser(void);
~COnLineUser(void);
};



以下是CAysncsocket类的部分函数:

class CAsyncSocket : public CObject
{
DECLARE_DYNAMIC(CAsyncSocket);
private:
CAsyncSocket(const CAsyncSocket& rSrc); // no implementation
void operator=(const CAsyncSocket& rSrc); // no implementation




我猜测原因是这个导致 , 怎么办,在线等



[解决办法]
把operator=给私有的意思就是不许复制
[解决办法]
C/C++ code
private:CAsyncSocket(const CAsyncSocket& rSrc); // no implementation
[解决办法]
为了禁止复制而把复制构造函数和操作符=都给private了,很稀奇吗?
那楼主如果知道单例模式把构造函数给private了,是不是更吃惊?
[解决办法]
封装而已
[解决办法]
那就是说明不给你继承的嘛。楼主可以去看看CSocket等类。或者完全自己写Socket类咯
[解决办法]
探讨
C/C++ code

“CAsyncSocket::CAsyncSocket”: 无法访问 private 成员(在“CAsyncSocket”类中声明)
1> d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afxsock.h(104) : 参见“CAsyncSocket::CAsy……

[解决办法]
来学习,私有了怎样继承呢?
[解决办法]
afx.h
C/C++ code
protected:    CObject();private:    CObject(const CObject& objectSrc);              // no implementation    void operator=(const CObject& objectSrc);       // no implementation 


[解决办法]

探讨

afx.h
C/C++ code
protected:
CObject();
private:
CObject(const CObject&amp; objectSrc); // no implementation
void operator=(const CObject&amp; objectSrc); // no implem……

热点排行