3
#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 之前的主表达式”。

4

3 回答 3

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)

我也很担心你申报的官员干部。它是一个字符指针数组,但没有内存分配。你说的是那个声明吗?

于 2012-11-21T13:27:32.970 回答
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)

您可能只是不小心将声明复制粘贴到了子类的构造函数中。

于 2012-11-21T13:28:30.067 回答
0

改变

char* officer_cadre[3];

char officer_cadre[3];
于 2012-11-21T13:33:47.820 回答