C++ - 派生类 - 错误:在"int"之前预期的主表达式
C++ - Deriving Classes - Error: expected primary expression before'int'
第一篇文章,请对我温柔点…
我正试图实现一个派生类,我有问题,无论我尝试得到编译错误。我确信这是我错过的一些简单的东西,但我对此非常陌生,我所有的研究都没有给我任何帮助(或者我只是错过了它,因为我不知道我在做什么!)。
我的头文件:
#ifndef WEEKDAY_H
#define WEEKDAY_H
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
class DateTime{
public:
DateTime(int y, int m, int d, int h = 0, int min = 0, int s = 0);
void display();
protected:
string get_string_component(char option, tm* dateStruct);
int get_year_days(tm* dateStruct);
struct tm DTstruct;
private:
bool validate_data( int y, int m, int d, int h, int min, int s);
};
class WeekDay : public DateTime{
public:
WeekDay(int y, int m, int d, int h = 0, int min = 0, int s = 0);
void display();
};
#endif
这是我试图实现的。cpp文件的摘录:
WeekDay::WeekDay(int y, int m, int d, int h, int min, int s)
: DateTime(int y, int m, int d, int h, int min, int s),{
}
void WeekDay::display(){
}
目前我得到以下错误:
weekday.cpp: In constructor 'WeekDay::WeekDay(int, int, int, int, int, int)':
weekday.cpp:58:13: error: expected primary-expression before 'int'
weekday.cpp:58:20: error: expected primary-expression before 'int'
weekday.cpp:58:27: error: expected primary-expression before 'int'
weekday.cpp:58:34: error: expected primary-expression before 'int'
weekday.cpp:58:41: error: expected primary-expression before 'int'
weekday.cpp:58:50: error: expected primary-expression before 'int'
weekday.cpp:60:1: error: expected identifier before '{' token
如果我改变周围的东西。cpp文件,我得到不同的错误-显然。
基本上我真的不知道该怎么做,一直在努力寻找正确的方法…
无论如何,如果有人能给我指出正确的方向,我将不胜感激。
谢谢
您使用的成员初始化列表不正确。如果您希望将传递给WeekDay
构造函数的参数值传递给DateTime
的构造函数,则需要删除类型:
WeekDay::WeekDay(int y, int m, int d, int h, int min, int s)
: DateTime(y, m, d, h, min, s) {
}
可以把它看作是调用一个函数(因为实际上,它就是这样做的)。如果你有一个像void foo(int x);
这样的函数,你不会把它写成foo(int 5)
,对吧?
: DateTime(int y, int m, int d, int h, int min, int s),{
删除该行所有的"int"
这一行:
: DateTime(int y, int m, int d, int h, int min, int s),{
应:: DateTime(y, m, d,h, min,s) {
违规行是这一行:
: DateTime(int y, int m, int d, int h, int min, int s),{
首先,在,
之前有一个尾随逗号,然后您应该删除这一行中的int
:您不是定义超类构造函数,而是调用它。可以把它看作一个普通的(未绑定的)函数:使用f(x)
调用函数,而不是使用f(int x)
。
成员初始化列表接受一个逗号分隔的数据成员列表,并使用您提供的参数初始化它。int x
不是一个值,在这种情况下它实际上是一个语法错误。但是,x
将是一个值。
WeekDay::WeekDay(int y, int m, int d, int h, int min, int s)
: DateTime(y, m, d, h, min, s)
相关文章:
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 在函数中使用 const int size 参数创建数组会在 Visual Studio 中抛出错误 C++:表达式的计
- 数组类型 int[n][n] 不可赋值,因为表达式必须具有常量值
- 错误:'int'之前的预期主表达式以及代码中的许多类似错误
- QT连接:使用lambda表达式重置通过了int变量(怪异)
- 在另一个成员函数中调用成员函数时'int'之前的预期主表达式
- 为什么 C 和 C++ 允许表达式 (int) + 4*5
- 缩小从"int"(常量表达式)到"无符号int"的转换 - MSVC vs gc
- 在算术表达式中,双精度会隐式转换为无符号 int 吗?
- C++常量 int 在常量表达式中不可用
- 正则表达式:在字符串和冒号之后提取 int
- 错误:"SIZE"在使用模板<类 T、int MAX_SIZE >时无法出现在常量表达式中
- C++:从类型"int*"的表达式初始化类型"const int*&"的引用无效
- 在 int 数组的情况下,新表达式可以"overflow"吗?
- "const int <variable>" 不能出现在常量表达式中
- C++错误 - 'char' 和'int'之前的预期主表达式
- dev C++ "int" 之前的预期主要表达式
- 模板int参数来自C++11中的常量表达式
- 表达式*(int*)a是什么意思?
- 表达式int a {10};做的