Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2014, 18:18   #1
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию C++ в чем проблема? Не могу обратиться к элементам массива A. Пишет "выражение должно иметь тип указателя"

Код:
IContainer *A = new myString[5];
A[2]->push();
Не могу обращаться не к какому элементу массива A.
Пишет выражение должно иметь тип указателя. Что это значит?

Вот исп. классы:

Код:
class IContainer 
{
public:
	virtual void push();
	virtual void pop();
	virtual void info();
};
Код:
class myString: public IContainer
{
private: // свойства
	char str[MAX_SIZE];
public: // методы
	myString(void);  // конструктор по умолчанию
	myString(char*); // конструктор с параметром
	~myString(void); // деструктор
	myString& operator+(myString); // сложение типов myString
	myString operator+(char);      // сложение типов myString + char
	myString& operator+=(const myString&);  
	myString& operator=(const myString&);  // копирование
	char* getStr(void);
	char operator[](int); // индексация
	void operator=(char*); //копирвание
	bool operator==(myString&); //отношение равенства
	
	// логические операции
	friend bool operator>(myString&, myString&);
	friend bool operator<(myString&, myString&);
	friend bool operator>=(myString&, myString&);
	friend bool operator<=(myString&, myString&);
	friend bool operator==(myString&, myString&);
	friend bool operator!=(myString&, myString&);
	
	// ввод\вывод в стандартный поток
	friend std::ostream& operator<<(std::ostream&,const myString&);
	friend std::istream& operator>>(std::istream&, myString&);
};
Praud вне форума Ответить с цитированием
Старый 04.05.2014, 18:39   #2
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

Цитата:
Сообщение от Praud Посмотреть сообщение
Код:
IContainer *A = new myString[5];
A[2]->push();
Не могу обращаться не к какому элементу массива A.
Пишет выражение должно иметь тип указателя. Что это значит?

Вот исп. классы:

Код:
class IContainer 
{
public:
	virtual void push();
	virtual void pop();
	virtual void info();
};
Ты используешь класс для создания массива в качестве переменной? Оригинально...

Последний раз редактировалось vasek123; 04.05.2014 в 18:41.
vasek123 вне форума Ответить с цитированием
Старый 04.05.2014, 18:41   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Пишет выражение должно иметь тип указателя. Что это значит?
Только то, что написано. Для -> нужен указатель, у вас в массиве объекты.

Цитата:
Ты используешь класс для создания массива в качестве переменной?
У него переменная А
p51x вне форума Ответить с цитированием
Старый 04.05.2014, 18:53   #4
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Так какой выход ?

Вот задание.
Создать и протестировать следующие классы
1. Абстрактный класс.
Создать абстрактный класс Container, в котором определить чисто виртуальные функции для добавления, удаления и определения количества элементов в контейнере.

2. Класс одиночного наследования.
a) Модифицировать класс динамической структуры данных,содержащей строки (л.р. №2), чтобы он был производным от класса Container.
б) Создать 2 различных класса, производные от класса динамической структуры, позволяющие сортировать и фильтровать выходные данные. Для этого вводятся виртуальные функции, соответственно, для сортировки – функция для сравнения 2 строк, для фильтрации – предикат, определяющий, будет ли строка присутствовать в выборке фильтра.

Как я понимаю перед тем как сортировать строки мне нужно их запихнуть в контейнер. Контейнером, опять таки как я понимаю должен служить массив String. В прошлой лабе именно его мы описывали.
Praud вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в Visual Studio C++/CLI из одной формы обратиться к элементам другой? Sergey041691 Visual C++ 0 06.02.2012 22:21
Выражение должно иметь константное значение? Си snqL Общие вопросы C/C++ 6 14.10.2011 22:12
к элементам первой половины массива добавить минимум, а к элементам второй - добавить максимум specialist Паскаль, Turbo Pascal, PascalABC.NET 3 08.05.2011 01:46
Не могу понять в чем проблема. Демик Помощь студентам 7 01.02.2011 19:16
строковое выражение числа должно быть переведено в вещественный тип Wi1D Помощь студентам 8 09.02.2009 18:16