我用vc6的向导插入一个非mfc类,即标准类
然后重载输入输出流
ostream& operator<<(ostream& out,CEntity& obj);
如果只在类中声明,
定义在类的外头,即在.cpp文件中,会发现没法访问该类的私有成员,我已经把她声明为永远类了。如果把整个流函数放在类中,则可以编译过
还有就是在使用这个输入输出流问题。
编译会提示不认识这个类的输入输出流运算。
只有在该文件中声明这个流函数才能编译过, 但我已经把这个类的头文件include;以前我都是吧整个类放在一个头文件中,没遇到这个问题,用向导生成出现了很多问题
请大家给点指点。谢谢啦还有就是如果把整个流函数放在类中,即使是在使用的地方声明也会出现问题,可能是函数的作用域问题吧
然后重载输入输出流
ostream& operator<<(ostream& out,CEntity& obj);
如果只在类中声明,
定义在类的外头,即在.cpp文件中,会发现没法访问该类的私有成员,我已经把她声明为永远类了。如果把整个流函数放在类中,则可以编译过
还有就是在使用这个输入输出流问题。
编译会提示不认识这个类的输入输出流运算。
只有在该文件中声明这个流函数才能编译过, 但我已经把这个类的头文件include;以前我都是吧整个类放在一个头文件中,没遇到这个问题,用向导生成出现了很多问题
请大家给点指点。谢谢啦还有就是如果把整个流函数放在类中,即使是在使用的地方声明也会出现问题,可能是函数的作用域问题吧
// Entity.h: interface for the CEntity class.
//
//////////////////////////////////////////////////////////////////////#if !defined(AFX_ENTITY_H__436E93DF_905A_4DB9_9F57_162066DE2A94__INCLUDED_)
#define AFX_ENTITY_H__436E93DF_905A_4DB9_9F57_162066DE2A94__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000#include<iostream>
using namespace std;class CEntity
{
friend ostream& operator<<(ostream& out,CEntity& obj);
friend istream& operator>>(istream& in,CEntity& obj);
public:
UINT& ID();
CString& Name();
CEntity();
virtual ~CEntity();private:
UINT m_nID;
CString m_strName;
};#endif // !defined(AFX_ENTITY_H__436E93DF_905A_4DB9_9F57_162066DE2A94__INCLUDED_)
//
//////////////////////////////////////////////////////////////////////#include "stdafx.h"
#include "Entity.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////CEntity::CEntity()
{
m_nID=0;
}CEntity::~CEntity()
{}CString& CEntity::Name()
{
return m_strName;
}UINT& CEntity::ID()
{
return m_nID;
}ostream& operator<<(ostream& out,CEntity& obj)
{
out<<obj.ID()<<obj.Name().GetBuffer(MAX_PATH);
obj.Name().ReleaseBuffer();
return out;
}istream& operator>>(istream& in,CEntity& obj)
{
UINT m_nTemp;
char strTemp[1024];
in>>m_nTemp>>strTemp;
obj.ID()=m_nTemp;
obj.Name()=strTemp;
return in;
}