0

我已经从 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'

这里的任何见解将不胜感激!

4

2 回答 2

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);

如果你做第一个,那么当然你必须从源文件中删除构造函数。

现在,你有点混合它,在头文件中有一个初始化列表。这使得编译器也期望一个函数体。

于 2013-09-10T08:23:20.797 回答
1
  1. 在头文件中,构造函数声明不允许“初始化列表”。将其更改为GuidedTour(string ID, string desc, double fee, int size, string guide, string date);

  2. 在 cpp 文件中,构造函数实现应该是GuidedTour::GuidedTour(...) : Tour(ID, desc, fee) {...}

于 2013-09-10T08:26:45.733 回答