主题:[讨论]求助对象指针和类的三个问题
先发下头文件的main()的代码
[code=c]
// employee.h
class employee
{
protected:
int individualEmpNo; //个人编号
int grade; //级别
float accumPay; //月薪
public:
employee(){ //构造函数
individualEmpNo = 1000; //员工编号目前最大为 1000
grade = 1; //级别初值为 1
accumPay = 0.0; //月薪总额初值为 0
}
~employee(); //析构函数
void IncreaseEmpNo(int); //增加编号函数
void promote(int); //升级函数
void SetaccumPay(float grade = 1000.0); //设置月薪函数
int GetindividualEmpNo(); //提取编号函数
int Getgrade(); //提取级别函数
float GetaccumPay(); //提取月薪函数
};
employee::~employee(){}
void employee::IncreaseEmpNo(int steps)
{ individualEmpNo += steps;}
void employee::promote(int increment)
{ grade += increment;}
void employee::SetaccumPay(float pa)
{ accumPay = pa;}
int employee::GetindividualEmpNo()
{ return individualEmpNo;}
int employee::Getgrade()
{ return grade;}
float employee::GetaccumPay()
{ return accumPay;}[/code]
问题一:为什么把这个头文件中的构造函数写在类的外面不行呢?环境是VS2010.
例如在类里面声明了employee();
在类外面加上:
[code=c]
employee::employee()(
individualEmpNo = 1000; //员工编号目前最大为 1000
grade = 1; //级别初值为 1
accumPay = 0.0; //月薪总额初值为 0
)
[/code]
[code=c]
// main.cpp
#include <iostream>
#include <stdlib.h>
#include "employee.h"
using namespace std;
#define OK 0
#define ERROR -1
#define INITNUM 1
#define INCREMENTNUM 1
int main()
{
employee *m;
int i, num = -1;
char c = 'y'; float pa;
m = (employee *)malloc(INITNUM * sizeof(employee));
if(!m) return OVERFLOW;
while (c == 'y'){
num++;
if(num >= sizeof(*m)){
m = (employee *)realloc(m, (num + INCREMENTNUM) * sizeof(employee));
if(!m) return OVERFLOW;
}
cout << "请输入一个雇员的级别: ";
cin >> pa; (*m + num).grade = pa;
(*m + num).IncreaseEmpNo(i);
(*m + num).SetaccumPay();
cout << "按'y'键继续输入,其他任意键退出!" << endl;
cin >> c;
}
}[/code]
问题二:可否使用对象指针?如果可以,为什么编译时提示error C2784
问题三:如果可以使用对象指针,怎样判断为指针分配的内存空间已满然后用realloc()函数重新分配?主要是怎么判断。
希望高手解答
[code=c]
// employee.h
class employee
{
protected:
int individualEmpNo; //个人编号
int grade; //级别
float accumPay; //月薪
public:
employee(){ //构造函数
individualEmpNo = 1000; //员工编号目前最大为 1000
grade = 1; //级别初值为 1
accumPay = 0.0; //月薪总额初值为 0
}
~employee(); //析构函数
void IncreaseEmpNo(int); //增加编号函数
void promote(int); //升级函数
void SetaccumPay(float grade = 1000.0); //设置月薪函数
int GetindividualEmpNo(); //提取编号函数
int Getgrade(); //提取级别函数
float GetaccumPay(); //提取月薪函数
};
employee::~employee(){}
void employee::IncreaseEmpNo(int steps)
{ individualEmpNo += steps;}
void employee::promote(int increment)
{ grade += increment;}
void employee::SetaccumPay(float pa)
{ accumPay = pa;}
int employee::GetindividualEmpNo()
{ return individualEmpNo;}
int employee::Getgrade()
{ return grade;}
float employee::GetaccumPay()
{ return accumPay;}[/code]
问题一:为什么把这个头文件中的构造函数写在类的外面不行呢?环境是VS2010.
例如在类里面声明了employee();
在类外面加上:
[code=c]
employee::employee()(
individualEmpNo = 1000; //员工编号目前最大为 1000
grade = 1; //级别初值为 1
accumPay = 0.0; //月薪总额初值为 0
)
[/code]
[code=c]
// main.cpp
#include <iostream>
#include <stdlib.h>
#include "employee.h"
using namespace std;
#define OK 0
#define ERROR -1
#define INITNUM 1
#define INCREMENTNUM 1
int main()
{
employee *m;
int i, num = -1;
char c = 'y'; float pa;
m = (employee *)malloc(INITNUM * sizeof(employee));
if(!m) return OVERFLOW;
while (c == 'y'){
num++;
if(num >= sizeof(*m)){
m = (employee *)realloc(m, (num + INCREMENTNUM) * sizeof(employee));
if(!m) return OVERFLOW;
}
cout << "请输入一个雇员的级别: ";
cin >> pa; (*m + num).grade = pa;
(*m + num).IncreaseEmpNo(i);
(*m + num).SetaccumPay();
cout << "按'y'键继续输入,其他任意键退出!" << endl;
cin >> c;
}
}[/code]
问题二:可否使用对象指针?如果可以,为什么编译时提示error C2784
问题三:如果可以使用对象指针,怎样判断为指针分配的内存空间已满然后用realloc()函数重新分配?主要是怎么判断。
希望高手解答