子类到父类间构造函数参数的传递
大家好,刚学习简单工厂模式,对里面的例子用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;
};
};
这个的构造函数,,
名字写错了.