#include<iostream>
#include<cstring>
using namespace std;
class Employee
{
char name[5];
int id;
int age;
public:
Employee(char* a, int b, int c)
{
strcpy(name, a);
id=b;
age=c;
}
};
class Officer: public Employee
{
char officer_cadre[3];
public:
Officer(char* a, int b, int c, char* d):Employee(char* a, int b, int c)
{
strcpy(officer_cadre, d);
}
};
int main()
{
Officer o1("Nakul", 1, 2, "ABC");
return 0;
}
上面的代码很简单,但是我无法弄清楚为什么编译器会抛出'char之前的预期主表达式'和'int之前的预期主表达式'之类的错误。
答案 0 :(得分:4)
更改此行:
Officer(char* a, int b, int c, char* d):Employee(char* a, int b, int c)
对此:
Officer(char* a, int b, int c, char* d):Employee(a,b,c)
另外,我担心你的官员声明。它是一个字符指针数组,但没有内存分配。那是你的意思吗?
答案 1 :(得分:4)
在这一行
Officer(char* a, int b, int c, char* d):Employee(char* a, int b, int c)
你应该传递a,b和c。相反,您使用语法来声明a,b和c。当只是提到它们时,你不需要这些类型。你应该做的IE:
Officer(char* a, int b, int c, char* d):Employee(a, b, c)
您可能只是意外地将声明复制粘贴到子类的构造函数中。
答案 2 :(得分:0)
更改
char* officer_cadre[3];
到
char officer_cadre[3];