#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/