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

C++ error - expected primary expression before 'char' and 'int'

本文关键字:表达式 错误 char C++ int      更新时间:2023-10-16
#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;
}

上面的代码很简单,但我无法弄清楚为什么编译器会抛出诸如"字符之前的预期主表达式"和"int 之前的预期主表达式"之类的错误。

在此行

  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)

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

更改此行:

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)

我也对你宣布officer_cadre感到关切。 它是一个字符指针数组,但没有内存分配。 这是你的意思吗?

更改

char* officer_cadre[3];

char officer_cadre[3];