第一篇帖子对我很温柔......
我正在尝试实现派生类,并且遇到问题,无论我尝试编译错误。我确信这是一件很简单的事,我已经错过了,但我对此非常陌生,所有的研究都没有给我任何帮助(或者我错过了它因为我不知道我在做什么!)。
这是我的头文件:
#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文件中的内容,我会得到不同的错误 - 显然。
基本上我真的不知道该怎么做,并努力寻找正确的方法...
无论如何,如果有人能指出我正确的方向,我们将不胜感激......
由于
答案 0 :(得分:7)
您正在错误地使用成员初始化列表。如果要将传递给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)
来调用它,是吗?
答案 1 :(得分:0)
:DateTime(int y,int m,int d,int h,int min,int s),{
从该行中删除所有“int”。
答案 2 :(得分:0)
这一行:
: DateTime(int y, int m, int d, int h, int min, int s),{
应该是:
: DateTime(y, m, d,h, min,s) {
答案 3 :(得分:0)
成员初始化列表采用逗号分隔的数据成员列表,并使用您提供的参数对其进行初始化。 int x
不是值,在这种情况下实际上是语法错误。但是,x
将是一个值。
WeekDay::WeekDay(int y, int m, int d, int h, int min, int s)
: DateTime(y, m, d, h, min, s)
答案 4 :(得分:0)
违规行是这一行:
: DateTime(int y, int m, int d, int h, int min, int s),{
首先你在,
之前有一个尾随逗号,然后你应该删除你放在这行中的int
:你不是定义超类构造函数,但是< em>调用它。将此视为普通(未绑定)功能:您使用f(x)
调用函数,而不是f(int x)
。