я получаю следующее сообщение об ошибке:Как я могу исправить ошибку «Перегруженная функция-член не найдена»?
"overloaded function not found in 'pizza'"
Это со ссылкой на void outputDescription
и double computePrice
функций, ниже. Я не могу понять, что не так.
Я начинаю с C++, но код выглядит правильно. Это для класса. У меня должно быть как минимум 1 функция мутатора и 1 функция доступа, функция вычисления цены и функция вывода описания пиццы.
Вот мой код:
#include <iostream>
#include <string>
using namespace std;
class pizza
{
public:
void getOrder (string, string, int, int) ;
void outputDescription (string&, string&, int&, int&) const;
double computePrice (string&, int&, int&) const;
private:
string type;
string size;
int pepperoni;
int cheese;
};
int main()
{
pizza customerpizza;
double price;
string type;
string size;
int pepperoni;
int cheese;
customerpizza.getOrder (type, size, pepperoni, cheese);
customerpizza.outputDescription (type, size, pepperoni, cheese);
price = customerpizza.computePrice (size, pepperoni, cheese);
cout << "Total cost is $" << price << ".\n";
system("PAUSE");
return 0;
}
void pizza::getOrder (string type, string size, int pepperoni, int cheese)
{
int pizzaType;
int pizzaSize;
cout << "Please choose 1 for deep dish, 2 for hand tossed, or 3\n"; cout << " for pan pizza.\n";
cin >> pizzaType;
switch(pizzaType)
{
case 1: type = "deep dish";
break;
case 2: type = "hand tossed";
break;
case 3: type = "pan";
break;
default: cout << "You entered an invalid choice. Please\n";
cout << " enter 1 for deep dish, 2 for hand\n";
cout << " tossed, or 3 for pan pizza.\n";
}
cout << "Please choose 1 for small, 2 for medium, or 3 for\n";
cout << " large pizza.\n";
cin >> pizzaSize;
switch(pizzaSize)
{
case 1: size = "small";
break;
case 2: size = "medium";
break;
case 3: size = "large";
break;
default: cout << "You entered an invalid choice. Please\n";
cout << " enter 1 for small, 2 for medium, or\n";
cout << " 3 for large pizza.\n";
}
cout << "How many pepperoni servings on this pizza?\n";
cin >> pepperoni;
cout << "How many cheese servings on this pizza?\n";
cin >> cheese;
}
void pizza::outputDescription (string type, string size, int pepperoni, int cheese)
{
cout << "You ordered a " << size << << type << " pizza with \n";
cout << pepperoni << " servings of pepperoni and "<< cheese << endl;
cout << "servings of cheese.\n";
}
double pizza::computePrice (string size, int pepperoni, int cheese)
{
double price;
if (size = "small")
{
price = 10 + (2 * (pepperoni + cheese));
}
else if (size = "medium")
{
price = 14 + (2 * (pepperoni + cheese));
}
else if (size = "large")
{
price = 17 + (2 * (pepperoni + cheese));
}
return price;
}
Поскольку это для класса, вам нужно будет научиться правильно ориентироваться в объекте. Ваши функции 'getOrder',' outputDescription' и 'computePrice' не должны иметь никаких аргументов. Они должны использовать переменные-члены, которые вы указали в 'pizza', а не аргументы. Как вы его написали, вы можете удалить переменные-члены пиццы, и ваш код будет работать одинаково. – john
Было бы полезно, если бы вы могли включить полное сообщение об ошибке из своего компилятора в качестве части вашего вопроса. –
Спасибо всем. Я никогда не использовал этот форум, потому что я предполагал, что ответы не придут своевременно, но, мальчик, я удивлен. Вы, ребята, потрясающие и очень полезные. К сожалению, я не видел ваших ответов, пока не нашел часть своей проблемы. Я получил его на работу, но Джон, спасибо за ваш комментарий об объектных функциях. Я переработал его с вашим предложением не отправлять аргументы, и программа отлично работает. – tysowell