CodeNet - все для программиста!CodeNet - 10 лет - мегавстреча!
Все для программиста!
  Статьи   Форум   Исходники   Каталог   Хостинг   IRC  
 Справочник функций

Ваш аккаунт

Логин:
Пароль:

Забыли пароль?
Регистрация

Почтовая рассылка



Подписчиков: 6553
(Из них RSS: 0)

Последний выпуск: 22.06.2010
Старый 17.07.2009, 09:45   #1
Spice
Начинающий
 
Регистрация: 10.07.2008
Сообщений: 18
Вес репутации: 0
Spice is an unknown quantity at this point
По умолчанию Проблема при переборе списка

При переборе списка компилятор ругается на строчку "printf("%i", index->geti());"
MyClass::geti' : cannot convert 'this' pointer from 'const MyClass' to 'MyClass &'
Объясните, пожалуйста кто сможет почему.
И в случаи, если так делать нельзя, подскажите, как это реализовать.

Код:
#include <stdlib.h>
#include <list>
using namespace std;

class MyClass
{
public:
	MyClass(int i);

	int geti();

protected:
	int i;
};

MyClass::MyClass(int i)
{
	this->i = i;
}

int MyClass::geti()
{
	return 10;
}

void main()
{
	list<MyClass> q;
	q.push_back(MyClass(1));
	q.push_back(MyClass(2));

	for(list<MyClass>::const_iterator index = q.begin(); index != q.end(); index++)
	{
		printf("%i", index->geti());

		printf("%s", "\n");
	}

	getchar();

	return;
}
__________________
Что выбрать: зависимость от свободы или свободу от зависимости?..
Spice вне форума   Ответить с цитированием
Реклама
Старый 17.07.2009, 09:51   #2
nikitozz
Ветеран
 
Аватар для nikitozz
 
Регистрация: 09.03.2007
Сообщений: 1,003
Вес репутации: 20
nikitozz has a spectacular aura aboutnikitozz has a spectacular aura aboutnikitozz has a spectacular aura about
Отправить сообщение для nikitozz с помощью ICQ
По умолчанию

Попробуйте так
Код:
class MyClass
{
public:
	MyClass(int i);

	int geti() const;

protected:
	int i;
};
__________________
"For every complex problem, there is a solution that is simple, neat, and wrong." H.L. Mencken
nikitozz вне форума   Ответить с цитированием
Старый 17.07.2009, 10:01   #3
Spice
Начинающий
 
Регистрация: 10.07.2008
Сообщений: 18
Вес репутации: 0
Spice is an unknown quantity at this point
По умолчанию

Большое спасибо!! Помогло :-)
__________________
Что выбрать: зависимость от свободы или свободу от зависимости?..
Spice вне форума   Ответить с цитированием
Старый 22.07.2009, 06:28   #4
Spice
Начинающий
 
Регистрация: 10.07.2008
Сообщений: 18
Вес репутации: 0
Spice is an unknown quantity at this point
По умолчанию

Возникла подобная проблема. Только в данном случаи метод класса не возвращает значения, а изменяет значение приватного поля класса.
"Error 1 error C2662: 'Point::SetDX' : cannot convert 'this' pointer from 'const Point' to 'Point &' f:\coding\c++\list_test\mainunit.cpp 61 LIST_TEST"

Код:
#include <stdlib.h>
#include <list>
using namespace std;

class Point
{
public:
	Point();
	Point(float dX, float dY);

	void SetDX(float dX);
	void SetDY(float dY);

	float GetDX() const;
	float GetDY() const;

protected:
	float dX;
	float dY;
};

Point::Point(): dX(0),dY(0)
{
}

Point::Point(float dX, float dY)
{
	this->dX = dX;
	this->dY = dY;
}

void Point::SetDX(float dX)
{
	this->dX = dX;
}

void Point::SetDY(float dY)
{
	this->dY = dY;
}

float Point::GetDX() const
{
	return this->dX;
}

float Point::GetDY() const
{
	return this->dY;
}

void main()
{
	list<Point> lsPoint;
	lsPoint.push_back(Point());
	lsPoint.push_back(Point(10, 10));
	lsPoint.push_back(Point(20, 20));

	for(list<Point>::const_iterator indexPoint = lsPoint.begin(); indexPoint != lsPoint.end(); indexPoint++)
	{
		indexPoint->SetDX(100);

		printf("adr = %x; x=%f, y=%f \n", &(*indexPoint), indexPoint->GetDX(), indexPoint->GetDY());
	}

	getchar();

	return;
}
__________________
Что выбрать: зависимость от свободы или свободу от зависимости?..
Spice вне форума   Ответить с цитированием
Старый 22.07.2009, 06:45   #5
sigmov
Специалист
 
Аватар для sigmov
 
Регистрация: 16.09.2008
Адрес: Владивосток
Сообщений: 270
Вес репутации: 6
sigmov is on a distinguished road
Отправить сообщение для sigmov с помощью ICQ
По умолчанию

используйте простой list<T>::iterator а не list<T>::const_iterator, ибо второй предполагает что через него не будут пытаться изменить класс.
__________________
За Веру и Отечество
sigmov вне форума   Ответить с цитированием
Старый 22.07.2009, 08:19   #6
Spice
Начинающий
 
Регистрация: 10.07.2008
Сообщений: 18
Вес репутации: 0
Spice is an unknown quantity at this point
По умолчанию

Большое спасибо. Как часто это бывает, всего лишь невнимательность. :-)
__________________
Что выбрать: зависимость от свободы или свободу от зависимости?..
Spice вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# 2.0 Передача в качестве списка полей объектов из списка. Ordos Microsoft .NET Framework 1 28.03.2008 18:48
Сортировка списка STL 0cool C/C++/C# - общие вопросы 4 26.05.2007 17:20
список от списка Tralala Microsoft Visual C++ 2 22.11.2005 20:33
Как свзяать два списка? edson Web программирование 7 11.11.2005 12:16
Структура списка WildAn Visual Basic 1 25.03.2004 12:25


Часовой пояс GMT +4, время: 11:57.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd. Перевод: zCarot
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог