我一直在这里寻找堆栈和参考资料试图解决这个问题,但几天之后我感到难过。该程序是一个简单的篮球统计守护者,允许人们从篮球比赛输入统计数据,然后排序和显示统计数据。我环顾了很长一段时间,但大多数人都遇到了这个错误的问题,因为他们使用的是基类(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
答案 0 :(得分:2)
您在菜单类中的函数采用引用(&
),但是您传递的内存地址通常与指针(*
)相关联,您可以修复通过省略函数调用中的&
来实现此目的。例如:
自:
menu.displayMainMenu(&gameStats);
要:
menu.displayMainMenu(gameStats);
答案 1 :(得分:1)
从&
中取出所有main.cpp
运算符。此运算符意味着创建指向操作数的指针。但是你的函数不期望指针;他们希望绑定对象本身的引用。
错误消息说明:它无法将指针转换为引用。