错误“没有匹配函数来调用”C ++

时间:2014-04-14 03:36:50

标签: c++ compiler-errors

我一直在这里寻找堆栈和参考资料试图解决这个问题,但几天之后我感到难过。该程序是一个简单的篮球统计守护者,允许人们从篮球比赛输入统计数据,然后排序和显示统计数据。我环顾了很长一段时间,但大多数人都遇到了这个错误的问题,因为他们使用的是基类(square - > rectangle),这不是我的问题。我对c ++不太熟悉,所以我尝试了一系列的工作来实现这一点,包括各种变体

[]从std :: vector&,.. *,..& example等切换函数参数。 []玩弄我如何构建菜单类构造函数,完全省略它。

如果有人能够让我对我在这里失踪的内容有所了解,我们将不胜感激!

公平记录:这是针对学校的。

在main.cpp中:

#include <string>
#include <vector>
#include <iostream>
#include <fstream>
#include "player.hpp"
#include "stats.hpp"
#include "menu.hpp"

int main(int argc, char *argv[]){

Menu menu;
char inputType;
std::vector<Player> gameStats;
inputType = menu.displayWelcomeMenu();
while(inputType!= 'd' || inputType!= 'k'){
    std::cout << "oops, wrong input!" << std::endl;
    menu.displayWelcomeMenu();
    }
if(inputType='d'){
    std::ifstream fileStream("input.txt");
    Stats::initializeVectorFromFile(&gameStats, &fileStream);
}
else{
    Stats::initializeVectorFromUser(&gameStats);
}
menu.displayMainMenu(&gameStats);

return 0;
}

在menu.cpp中:

#include "player.hpp"
#include "stats.hpp"
#include "menu.hpp"
#include <string>
#include <vector>
#include <iostream>

Menu::Menu(){}
//functions with matching parameters to menu.hpp.......

在menu.hpp中:

#ifndef MENU_HPP_
#define MENU_HPP_

#include "player.hpp"
#include "stats.hpp"
#include <string>
#include <vector>
#include <iostream>

class Menu{
public:
    Menu();
    void handleMenuFlow(std::string, char, std::vector<Player> &);
    char displayWelcomeMenu();
    void displayMainMenu(std::vector<Player> &);
    void displaySortMenu(std::vector<Player> &);
    void displayAvailOptionMenu(std::vector<Player> &);
    char displaySortOptionMenu();
    void displayVectorByName(std::vector<Player> &);
    void displayVectorByInt(std::vector<Player> &, char);
    void displayStats(std::vector<Player> &);
    void displayDoubles(std::vector<Player> &);
    int exitProgram();
};
#endif

,错误如下:

g++ -c -g -std=c++0x main.cpp
main.cpp: In function ‘int main(int, char**)’:
main.cpp:26:33: error: no matching function for call to     
‘Menu::displayMainMenu(std::vector<Player>*)’
  menu.displayMainMenu(&gameStats);
                                 ^
main.cpp:26:33: note: candidate is:
    In file included from main.cpp:7:0:
menu.hpp:15:7: note: void Menu::displayMainMenu(std::vector<Player>&)
  void displayMainMenu(std::vector<Player> &);
       ^
menu.hpp:15:7: note:   no known conversion for argument 1 from ‘std::vector<Player>*’ 
to ‘std::vector<Player>&’
make: *** [main.o] Error 1

2 个答案:

答案 0 :(得分:2)

您在菜单类中的函数采用引用&),但是您传递的内存地址通常与指针(*)相关联,您可以修复通过省略函数调用中的&来实现此目的。例如:

自:

menu.displayMainMenu(&gameStats);

要:

menu.displayMainMenu(gameStats);

答案 1 :(得分:1)

&中取出所有main.cpp运算符。此运算符意味着创建指向操作数的指针。但是你的函数不期望指针;他们希望绑定对象本身的引用。

错误消息说明:它无法将指针转换为引用。