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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 14.01.2010, 14:04   #1
ddr9225
Пользователь
 
Регистрация: 13.01.2010
Сообщений: 21
По умолчанию Структуры

Вот изучаю классы на С++ и немного попробовал со структурой на С, вот простейший код, но он не работает. Я хотел спросить, нельзя же присваивать переменным значения прямо в созданной структуре, просто этот простой код не работает.

Код:
#include <iostream>
using namespace std;

struct CIRCLE
{
	int radius = 29;
	int color;
};

void main()
{
	CIRCLE A;
	cout<<A.radius;
	cin.get();
}
ddr9225 вне форума
Старый 14.01.2010, 14:09   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Так нельзя.
В структуре только объявление переменных. Но вы можете написать конструктор для структуры и задать один параметр по умолчанию. Типа такого
Код:
struct CIRCLE
{
	int radius;
	int color;
           CIRCLE(int r = 29, int col)
           {
                 radius = r;
                 color = col;
           }
};
И создавайте объект вот так
Код:
CIRCLE A(10, 3);
//или
CIRCLE *a = new CIRCLE(10,3);
MaTBeu вне форума
Старый 14.01.2010, 14:09   #3
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

У вас не правильно. Правильно будет так:

Код:
#include <iostream>
using namespace std;

struct CIRCLE
{
	int radius;//вы правильно предположили, нельзя задавать тут значение.
	int color;
};

void main()
{
	CIRCLE A;
	A.Radius = 28;//а тут можно
	cout<<A.radius;
	cin.get();
}
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума
Старый 14.01.2010, 14:26   #4
Yaqro
 
Регистрация: 14.01.2010
Сообщений: 6
По умолчанию

К сказанному добавлю, что проходит
Код:
struct CIRCLE
{
	static const int radius = 29;
	int color;
};
но это, ИМХО, сильный изврат
Yaqro вне форума
Старый 14.01.2010, 15:06   #5
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
но это, ИМХО, сильный изврат
Да плюс к тому, радиус становится один-единственный для вообще всех кругов, шаг вправо/шаг влево вообще нельзя сделать. Хуже чем при тоталитаризме...
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума
Старый 14.01.2010, 15:39   #6
ddr9225
Пользователь
 
Регистрация: 13.01.2010
Сообщений: 21
По умолчанию

Тут Матвей мне предложил использовать конструкторы, вот попробовал, не выходит.

Код:
#include <iostream>
using namespace std;

struct CIRCLE
{
	CIRCLE(int r ,int col)  
	{
		radius = r;
		color = col;
	}
};

void main()
{
	CIRCLE *a = new CIRCLE(10,3);
	cin.get();
}
ddr9225 вне форума
Старый 14.01.2010, 15:51   #7
Yaqro
 
Регистрация: 14.01.2010
Сообщений: 6
По умолчанию

Потому как забыл члены radius и color описать

Код:
struct CIRCLE
{
	int radius;
	int color;
	CIRCLE(int r ,int col)  
	{
		radius = r;
		color = col;
	}
};
Yaqro вне форума
Старый 14.01.2010, 15:55   #8
ddr9225
Пользователь
 
Регистрация: 13.01.2010
Сообщений: 21
По умолчанию

А результата не видно,если так:

Код:
#include <iostream>
using namespace std;

struct CIRCLE
{
	int radius; 
	int color;
	CIRCLE(int r ,int col)  
	{
		radius = r;    
		color = col;
	}
};


void main()
{
CIRCLE *a = new CIRCLE(10,3); //Это вроде динамическое создание 2-ух объектов? Сюда ещё и деструктор нужен?
	cin.get();
}

Последний раз редактировалось ddr9225; 14.01.2010 в 15:58.
ddr9225 вне форума
Старый 14.01.2010, 16:23   #9
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Конечно, не видно, потому что здесь ничего и не выводится.
Код:
#include <iostream>
using namespace std;

struct CIRCLE
{
	int radius; 
	int color;
	CIRCLE(int r ,int col)  
	{
		radius = r;    
		color = col;
	}
};


void main()
{
CIRCLE *a = new CIRCLE(10,3);
cout << a -> radius;
delete a;
	cin.get();
}
Деструктор тут не нужен, объект сам нормально уничтожится при вызове delete (вот его-то вызвать нужно). А создается тут только один объект, и его конструктор принимает два аргумента.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума
Старый 14.01.2010, 16:25   #10
Yaqro
 
Регистрация: 14.01.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от ddr9225 Посмотреть сообщение
А результата не видно
Так ты ж его не выводишь, вот и не видно. Добавь перед cin.get(), например:
Код:
cout << "radius=" << a->radius << ", color=" << a->radius << endl;
и наступит Вам счастье...

Цитата:
Это вроде динамическое создание 2-ух объектов? Сюда ещё и деструктор нужен?
Нет, это динамическое создание одного объекта класса CIRCLE. Кроме этого, конструктор и деструктор вызываются в случае любого создания/уничтожения объекта, не важно, динамического или нет. И относятся они к инициализации/деиницализации членов класса (у тебя radius и color). В твоем случае деструктор не очень нужен. Зато в конце проги неплохо было бы поставить
Код:
delete a;
P.S. Не обижайся, но лучше бы тебе для начала книжку почитать. Это все, на самом деле, азы
Yaqro вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
структуры в С++ серг Общие вопросы C/C++ 2 13.12.2009 15:08
СТРУКТУРЫ aka_Kiss Общие вопросы C/C++ 13 16.11.2009 20:29
Структуры. Влад-mego Помощь студентам 1 12.04.2009 19:24
Структуры в СИ ManInBlack Помощь студентам 3 04.04.2009 19:08
Структуры Centyrion Общие вопросы C/C++ 4 06.05.2008 20:33