这是我收到的错误。

Error   4   error C2511: 'Vector<T> Menus::sortListBy(sortType,Vector<T>)'
: overloaded member function not found in 'Menus'   z:\documents\visual
studio 2010\projects\oo_cw\oo_cw\menus.cpp  410 1   OO_CW

我相信这与我尝试使用包含在 header 中但似乎没有转移到其他类的枚举有关。

这是所涉及的 2 个标题以及我正在努力解决的功能:

菜单.cpp:
 Vector<connections> Menus::sortListBy(sortType sortKey,Vector<connections> sortList){}

菜单.h
#pragma once
#include "std_lib_facilities.h"
#include "Airport.h"
class Journey;
#include <string>



typedef enum {BACK,FORWARD,INVALID,OPTIONS} result;
typedef enum {BOOK,VIEW,EXIT} firstChoice;


class Menus
{
public:
  Menus(void);
  ~Menus(void);
  firstChoice firstMenu();
  Airport bookingMenuFirst(Vector<Airport>);
  Airport bookingMenuSecond(Vector<connections>,Vector<Airport>);
  airlines bookingMenuThird(Airport,Airport,Journey&);
  string bookingMenuDate();
  bool showReciept(string,string,string,string,double,double,double);
  string showRecieptNames();
  void readReciept(string);
  void optionMenu(Journey);
  Vector<connections> sortListBy(sortType,Vector<connections>);
};

旅程.h
#pragma once
#include "std_lib_facilities.h"
#include "Airport.h"
#include <string>
#include "Menus.h"

enum sortType {PRICE,TIME} ;

class Journey
{
 public:
  Journey(void);
  ~Journey(void);
//accessors
  Airport getStart();
  Airport getEnd();
  string getDate();
  airlines getAirline();
  string getStringAirline();
  double getTime();
  double getPrice();
  sortType getSort();
  //modifiers
  void setStart(Airport);
  void setEnd(Airport);
  void setPrice(double);
  void setTime(double);
  void setAirline(airlines);
  void setDate(string);
  void saveBooking();
  void setSort(sortType);


private:
  Airport startAirport;
  Airport endAirport;
  double price;
  double time;
  string date;
  airlines airline;
  Vector<string> splitBy(string,string);
  sortType sortingBy;

};

Menus.cpp 标题语句
#include "Menus.h"
#include "std_lib_facilities.h"
#include "Airport.h"
#include "Journey.h"

#include <string>

using namespace std;

最佳答案

  • enum sortType 定义在 Journey.h
  • 但是,
  • menu.h 中不可见,并且您在 enum sortType 类定义中的成员函数 Menus::sortListBy(sortType,Vector<connections>); 声明中使用 Menus 作为输入参数。
  • Menus.h 中删除 class Journey; 的前向声明并替换为 #include "Journey.h"
  • 删除 #include "Menus.h" 中的 Journey.h
  • 应该没有问题,因为您在 JourneyMenus 之间没有循环依赖问题。
  • 关于c++ - 错误 C2511 : overloaded member function not found in Class,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23738025/

    10-10 19:51