⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aimt.cpp

📁 一个面向对象的产生式推理模型
💻 CPP
字号:
#include "stdafx.h"
#include "AIMt.h"
#include "AiAssert.h"
#include "AiWffs.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


IMPLEMENT_SERIAL(AiMt,CObject,0)

AiMt::AiMt()
{
	m_id = 0;
	m_sign = NeedNotVersa;
	m_pre = NULL;
}
AiMt::AiMt(AiMt& mt)
{
	m_id = mt.m_id;
	m_sign = mt.m_sign;
	m_pre = mt.m_pre;
}
AiMt::~AiMt()
{
}
AiMt::AiMt(int id,int sign,AiMt* pre)
{
	m_id = id;
	m_sign = sign;
	m_pre = pre;
}

AiMt::AiMt(AiAssert& assert)
{
	m_id = assert.GetId();
	m_pre = NULL;
	m_sign = assert.m_sign;
}

AiMt::AiMt(int id,AiMt* pre)
{
	m_id=id;
	m_pre = pre;
}
int AiMt::GetId()
{
	return m_id;
}

int AiMt::GetSign()
{
	return m_sign;
}
const AiMt& AiMt::operator = (const AiMt& mtSrc)
{
	m_id = mtSrc.m_id;
	m_pre = mtSrc.m_pre;
	m_sign = mtSrc.m_sign;
	return *this;
}
AiMt& AiMt::operator ! ()
{
	if (m_sign==NeedVersa)
		m_sign=NeedNotVersa;
	else
		m_sign=NeedVersa;
	return *this;
}
AiMt AiMt::operator & (AiMt mt)
{
	AiMt* mt1 = new AiMt;
	AiMt* mt2 = new AiMt;
	mt1->SetId(this->GetId());
	mt1->SetSign(this->GetSign());
	mt1->SetPre( (this->GetPre()) );
	//don't set wff1's pre
	//假设&运算符从左到右结合
	mt2->SetId(mt.GetId());
	mt2->SetSign(mt.GetSign());
	mt2->SetPre(mt1);
	return *mt2;
}

void AiMt::SetId(int id)
{
	m_id = id;
}

void AiMt::SetSign(int sign)
{
	m_sign = sign;
}

void AiMt::SetPre(AiMt * pmt)
{
	m_pre = pmt;
}

AiMt* AiMt::GetPre()
{
	return m_pre;
}

void AiMt::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{	ar<<m_id<<m_sign;
	}
	else
	{	ar>>m_id>>m_sign;}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -