Класс и Объектная Практика - PullRequest
0 голосов
/ 10 мая 2019

Я практикуюсь с использованием базовых предметов и классов. Я знаю, что что-то напутал с синтаксисом, но не могу понять, что.

#include <iostream>
using namespace std;


class Pizza {
    public:

    string topping;
    int slices;


        void GetPizza(string topping, int slices) {
            topping = topping;
            slices = slices;
        }
}; 

int main() {
    Pizza pizza1;

    pizza1.GetPizza("cheese", 8);

    cout << pizza1.GetPizza;

    return 0;
}

Я пытаюсь напечатать начинки и количество кусочков пиццы1. Я просто продолжаю получать ошибки компилятора. Я также хотел попытаться напечатать только верхнюю часть или просто номер среза и не мог этого понять.

РЕДАКТИРОВАТЬ:

v2 моего кода без совпадения для вызова ошибок:

#include <iostream>
using namespace std;


class Pizza {
    public:

    string topping;
    int slices;


        void GetPizza(string t, int s) {
            topping = t;
            slices = s;
        }
}; 

int main() {
    Pizza pizza1;

    pizza1.topping("cheese");

    cout << pizza1.topping("cheese");

    return 0;
}

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Ошибка здесь cout << pizza1.GetPizza; Для вызова метода GetPizza требуется два аргумента в соответствии с вашей реализацией. Поэтому при его печати вам также необходимо передать эти аргументы, аналогично тому, что вы сделали в строке ниже. pizza1.GetPizza("cheese", 8);

0 голосов
/ 10 мая 2019

pizza1.GetPizza является функцией-членом класса. Вы не можете кормить его cout.

Если вы хотите что-то напечатать, выведите переменные члена класса. Как это:

cout << pizza1.topping;
cout << pizza1.slices;

Также в функции GetPizza есть следующие строки:

topping = topping;
slices = slices;

Как компилятор узнает, что левая часть относится к переменной-члену, а правая часть относится к аргументу функции (что, вероятно, и было намерением)? Убедитесь, что их имена отличаются.

void GetPizza(string t, int s) {
        topping = t;
        slices = s;
    }

РЕДАКТИРОВАТЬ v2:

pizza1.topping не является функцией. Это переменная-член типа string. Вы не можете назвать это так:

pizza1.topping("cheese");

Если вы хотите присвоить ему значение, правильный синтаксис:

pizza1.topping = "cheese";

То же самое относится и к следующей строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...