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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2009, 00:19   #1
Ultimateorb
 
Регистрация: 18.08.2009
Сообщений: 4
По умолчанию Проблема с использованием вектора STL C++

Как правильно сделать вектор из указателей на класс, Что бы после можно было вызывать методы класса...?

Я делаю вот так:

Код:
#include <vector>
#include <iostream>
#include <conio.h>

using namespace std;

class test
{
public:
	~test() {std::cout << "~test"<<endl;}
	int x;
	void result() {cout<<"x= "<<x<<endl;}	
};

  vector <test*> vec;  // определяю вектор указателей test класса
  vector <test*>::iterator *iter; // итератор что бы обращаться к методам
                                           // класса

void main()
{
 test a1;
 test a2;

 vec.push_back(&a1); // записываю в вектор указатель на a1
 vec.push_back(&a2); // записываю в вектор указатель на a1

 iter=vec.begin(); // получаю указатель на 1 элемент вектора, То есть на 
                       // test a1

 iter->result(); // ПОЧЕМУ ТАК НЕЛЬЗЯ СДЕЛАТЬ?
                    // фактически я тут пытаюсь вызвать a1.result() 
 getch (); 
}
В чем моя ошибка?
Ultimateorb вне форума Ответить с цитированием
Старый 18.08.2009, 00:35   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Исправлено.
Код:
#include <vector>
#include <iostream>
#include <conio.h>

using namespace std;

class test
{
public:
	~test() {std::cout << "~test"<<endl;}
	int x;
	void result() {cout<<"x= "<<x<<endl;}	
};

  vector <test*> vec;  // определяю вектор указателей test класса
  vector <test*>::iterator iter; // итератор что бы обращаться к методам
                                           // класса

int main()
{
 test a1;
 test a2;

 vec.push_back(&a1); // записываю в вектор указатель на a1
 vec.push_back(&a2); // записываю в вектор указатель на a1

 iter=vec.begin(); // получаю указатель на 1 элемент вектора, То есть на 
                       // test a1

 (*iter)->result();  // <-- исправлено

 getch (); 
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 18.08.2009, 00:40   #3
Ultimateorb
 
Регистрация: 18.08.2009
Сообщений: 4
По умолчанию

Спасибо большое
Ultimateorb вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработчик вектора прерывания Festovec Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 07.04.2010 10:05
Проблема с использованием переменных DarkMaks93 Общие вопросы Delphi 6 26.07.2009 16:43
Проблема компиляции проги с использованием MPI! neo-210 Общие вопросы C/C++ 7 14.07.2009 17:55
Программа с использованием STL. Где ошибка?! Jarik Общие вопросы C/C++ 1 04.03.2009 10:32