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

标签 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;
}

上面的代码很简单,但我无法弄清楚为什么编译器会抛出“expected primary expression before char”和“expected primary expression before 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)

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

关于C++ 错误 - 预期主表达式在 'char' 和 'int' 之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13494304/

相关文章:

c++ - 设计题: Holding class metadata for dynamic lookup

C++ 使用成员选择运算符(. 或 –>)访问静态成员函数

java - 注入(inject)与继承

c# - 在实例化时启动大量属性是一种好做法吗?

c++ - catch block 让我无法匹配运算符(operator)错误

c++ - C/C++嵌入python模块PIL,python函数想要返回所有像素数据,但我为什么不能?

iphone - Objective-C 私有(private)方法困境

javascript - Phantomjs javascript继承误区

dart - Dart const类参数检查

java - 继承java构造函数