C ++错误 - 'char'和'int'之前的预期主表达式

时间:2012-11-21 13:25:21

标签: c++ inheritance constructor

#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之前的预期主表达式'之类的错误。

3 个答案:

答案 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];