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