Смысл в программе в том что она должна вывести на консоль 4 значения: Potatos, Tomatos, Apple, Orange. Но вместо этого выводит предупреждение [Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]. В итоге выводит на экран знаки вопроса. Также еще вопрос на счет того что прописывать в скобках: Storage a = Storage();
В Java я писал: GoodIntrf a=new Fruit();
GoodIntrf.h
class GoodIntrf {
public:
virtual char GetName (int id) = 0;
};
Fruit.h
#include "GoodIntrf.h"
class Fruit : public GoodIntrf
{
public:
char* getName(int id) {
if (id == 1) return "Apple";
if (id == 2) return "Orange";
else return "Unknown type";
}
};
Vegetable.h
#include "GoodIntrf.h"
class Vegetable : public GoodIntrf
{
public:
char* getName(int id) {
if (id == 1) return "Potato";
if (id == 2) return "Tomato";
else return "Unknown type";
}
};
main.cpp
#include <iostream>
#include <string>
#include "Fruit.h"
#include "Vegetable.h"
#include "GoodIntrf.h"
class Storage : public GoodIntrf
{
public:
char GetName(int id) {
return id;
}
};
int main(int argc, char** argv) {
Storage a = Storage();
std::cout << a.GetName(1) << std::endl;
std::cout << a.GetName(2) << std::endl;
Storage a = Storage();
std::cout << a.GetName(1) << std::endl;
std::cout << a.GetName(2) << std::endl;
system("pause");
}
Прекратите возвращать char *
из функций, возвращающий указатели на строковые литералы. В С++ строковые литерал имеет тип const char [N]
и, соответственно, приводится к указателю const char *
, а не char *
. Исправляйте все типы возврата на const char *
.
Отдельно неясно, почему эти функции вообще являются членами каких-то классов. Они же со своим классом вообще никак не общаются. Что за странные функции с именами, отличающимися только капитализацией: GetName
и getName
. В чем замысел? Почему вдруг Storage::GetName
возвращает char
? Причем здесь вообще классы Vegetable
и Fruit
, если в программе они никак не используются?
Что касается того "что прописывать в скобках" - об этом пока рано говорить, ибо совершенно не ясно, что вы пытаетесь сделать.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
У меня есть переменная типа String, в которой лежит следующее значение: "0xF9"Как мне получить выходной символ, код которого равен hex значению в этой...
Доброго времени сутокЯ в приложении использую GraphView для построения графика