我已经从Java迁移到CPP,并且正在努力围绕构造构造函数链接,我认为这是我的问题的来源。
我的头文件如下:
public:
GuidedTour();
GuidedTour(string ID, string desc, double fee, int size, string guide, string date)
: Tour(ID, desc, fee);
我的cpp文件如下:
GuidedTour(string ID, string desc, double fee, int size, string guide, string date)
: Tour(ID, desc, fee) {
this->tourSize = size;
this ->tourGuide = guide;
this -> tourDate = date;
}
我遇到两个错误:
guided_tour.h: In constructor 'GuidedTour::GuidedTour(std::string, std::string, double, int, std::string, std::string)':
guided_tour.h:17:25: error: expected '{' at end of input
guided_tour.cpp: At global scope:
guided_tour.cpp:5:19: error: expected ')' before 'ID'
非常感谢任何见解!
答案 0 :(得分:5)
在头文件中完全定义构造函数,或者只声明构造函数。
换句话说,要么在头文件中执行 :
GuidedTour(string ID, string desc, double fee, int size, string guide, string date)
: Tour(ID, desc, fee) {
this->tourSize = size;
this ->tourGuide = guide;
this -> tourDate = date;
}
或者在头文件中执行 :
GuidedTour(string ID, string desc, double fee, int size, string guide, string date);
如果你是第一个,那么当然你必须从源文件中删除构造函数。
现在,你可以将它混合起来,在头文件中有一个初始化列表。这使得编译器也期望一个函数体。
答案 1 :(得分:1)
,构造函数声明不允许“初始化列表”。
将其更改为GuidedTour(string ID, string desc, double fee, int size, string guide, string date);
在cpp文件中,构造函数实现应为GuidedTour::GuidedTour(...) : Tour(ID, desc, fee) {...}