классы c ++ - конфликтующая ошибка объявления - PullRequest
0 голосов
/ 30 июля 2011

Я только начал изучать классы на C ++, и я получаю эту ошибку для кода ниже: conflicting declaration 'std::string PizzaOrder::toppings_offered'

Может кто-нибудь объяснить, что не так с моим кодом здесь?

class PizzaOrder
{
public:
    //all the toppings that are offered, constant array of strings
    static string toppings_offered[5];
    static double topping_base_cost;
};

string PizzaOrder::toppings_offered = {"onions", "bell peppers", "olives", "spinach", "tomatoes"};
double PizzaOrder::topping_base_cost = 0.50;

Ответы [ 4 ]

1 голос
/ 30 июля 2011

Вы забыли, что toppings_offered - это массив строк, а не строка:

string PizzaOrder::toppings_offered[5] = {"onions", ... };
//                                  ^
//                                  |

(Кстати, я бы ожидал, что заказ пиццы на заказ начинки, а не предложение их. Может ли быть, что ваш дизайн все еще немного перемешан?)

0 голосов
/ 30 июля 2011

Вы не можете сделать это как это.Вам нужно создать экземпляр класса, вызвав

PizzaOrder myPizzaOrder = new PizzaOrder();
myPizzaOrder.topping_offered {"","",""};
0 голосов
/ 30 июля 2011

Вы должны использовать тот же тип в определении, что и в объявлении:

string PizzaOrder::toppings_offered[5] = { ... };

Тип string[5], а не string.

0 голосов
/ 30 июля 2011

string PizzaOrder::toppings_offered[5]

вместо

string PizzaOrder::toppings_offered

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