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

子类到父类间构造函数参数的传递解决方案

2012-04-25 
子类到父类间构造函数参数的传递大家好,刚学习简单工厂模式,对里面的例子用C++代码实现。为什么子类将参数

子类到父类间构造函数参数的传递
大家好,刚学习简单工厂模式,对里面的例子用C++代码实现。为什么子类将参数传递给父类构造函数不成功,编译报错。

错误:
1>d:\program files\test\test\test.cpp(31) : error C2065: 'iNumber1' : undeclared identifier
1>d:\program files\test\test\test.cpp(31) : error C2065: 'iNumber2' : undeclared identifier
1>d:\program files\test\test\test.cpp(31) : error C2056: illegal expression
1>d:\program files\test\test\test.cpp(31) : error C2656: 'OperateSubtract::OperateAdd' : function not allowed as a bit field
1>d:\program files\test\test\test.cpp(31) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\program files\test\test\test.cpp(31) : warning C4183: 'OperateAdd': missing return type; assumed to be a member function returning 'int'
1>d:\program files\test\test\test.cpp(32) : error C2523: 'OperateSubtract::~OperateAdd' : destructor tag mismatch
1>d:\program files\test\test\test.cpp(56) : error C2660: 'OperateSubtract::OperateSubtract' : function does not take 2 arguments

代码:
[code=C/C++][/code]
#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
using namespace std;

class Operate
{
public:
Operate(int iNumber1, int iNumber2):m_iNumber1(iNumber1),m_iNumber2(iNumber2){};
~Operate(){}
virtual int GetResult(){}
protected:
int m_iNumber1;
int m_iNumber2;
};

class OperateAdd :public Operate
{
public:
OperateAdd(int iNumber1, int iNumber2):Operate(iNumber1,iNumber2){};
~OperateAdd(){};
int GetResult(){return m_iNumber1 + m_iNumber2;};
};

class OperateSubtract :public Operate
{
public:
OperateAdd(int iNumber1, int iNumber2):Operate(iNumber1,iNumber2){};
~OperateAdd(){};
int GetResult(){return m_iNumber1 - m_iNumber2; };
};

int _tmain(int argc, _TCHAR* argv[])
{
//初始化
char cOperate = ' ';
int iNumber1 = 0;
int iNumber2 = 0;
int iResult = 0;
Operate *pOperate = NULL; 

//输入
cout<<"Please input number1 operate number2:"<<endl;
cin>>iNumber1>>cOperate>>iNumber2;

//计算结果
switch (cOperate)
{
case '+':
pOperate = new OperateAdd(iNumber1, iNumber2);
break;
case '-':
pOperate = new OperateSubtract(iNumber1, iNumber2);
break;
default:
break;
}
iResult = pOperate->GetResult();

//输出
cout<<"The result :"<<iResult<<endl;
system("pause");
 return 0;
}

[解决办法]
class OperateSubtract :public Operate
{
public:
OperateAdd(int iNumber1, int iNumber2):Operate(iNumber1,iNumber2) {};
~OperateAdd() {};
int GetResult()
{
return m_iNumber1 - m_iNumber2;
};
};

这个的构造函数,,
名字写错了.

热点排行