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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2012, 16:17   #1
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
По умолчанию Классы

Добрый день, вот начал разбираться с классами, для начала хочу сделать программу вычисляющий некий пример, допустим 2 * х, пользовательский класс должен содержать необходимые элементы-данные, метод установки их начальных значений:
Void set(double X, …); (<- вот тут я к сожалению задание не понял, что от меня хотят, если кто понял объясните пожалуйста)
метод печати:
Void print(void);
метод, решающий поставленную задачу:
Void Run(void);

Код:
#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;

class Set
{
public: 
	double x, t;
	void Print(void);
};

void Set ::Print(void)
{
	cout<< "x = 14.26" << endl;
	cout<< "response = "<< t << endl;
};

void Run(void)
{
        Set response;
	double x = 14.26, t;
	response.t = 2*x;
};


void main(void)
{
	Set.Print();
	getchar();
}
ругается только на 't' : unreferenced local variable - в void Run(void)
и говорит что syntax error : missing ';' before '.' - где Set.Print();
так в принципе все компилит, но на экран не чего не выводит. В чем проблема подскажите?
Тёма_) вне форума Ответить с цитированием
Старый 30.03.2012, 16:32   #2
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
По умолчанию

в void Run(void) видимо надо писать так:
Код:
void Run(void)
{
        Set response, h;
	h.x = 14.26;
	response.t = 2 * h.x;
};
после чего 't' : unreferenced local variable - в void Run(void) исчезает, но на экране все равно пусто...
Тёма_) вне форума Ответить с цитированием
Старый 30.03.2012, 16:33   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Странный у вас вообще какой-то код. А вызывать метод класса без использования объекта можно только если метод static. К чему там у вас функция Run - вообще непонятно, если она не используется.
Еще посоветую убрать точки с запятой после функций - они там не нужны, void из скобочек функций убрать, main сделать типа int, в класс добавить конструктор, а Run убрать вообще, потому что это что-то страшное и непонятное.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 30.03.2012, 16:34   #4
LiuLiuJons
Форумчанин
 
Регистрация: 28.12.2011
Сообщений: 124
По умолчанию

Код:
void Print(void);
Уберите void в скобках.

А вот тут у вас страшная ошибка:
Код:
Set.Print();
Она кусается и больно пинает ногами..
Потому как: вы обращаетесь к самому классу, без создания объекта этого класса! Что же вы хотите получить на выходе, при таком коде..

Создайте объект класса для начала, с ним и работайте, вот например:
Код:
	Set response;
	response.Print();
"Думай не о задаче, а о решении" (с)
LiuLiuJons вне форума Ответить с цитированием
Старый 30.03.2012, 16:37   #5
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
По умолчанию

проблема с выводом решена, но все же я все засунул в main

Код:
void main(void)
{
	Set response, h ;
	h.x = 14.26;
	response.t = 2 * h.x;
	response.Print();
	getchar();
}
как это сделать в Run?

Гром, к сожалению конструктором пользоваться еще не умею, а Run сделать надо по заданию, так бы уже сделал данную программу, а почему "Еще посоветую убрать точки с запятой после функций", что это даст, объясни(для самообразования)? и как все же сделать Run грамотно?

Последний раз редактировалось Stilet; 30.03.2012 в 17:08.
Тёма_) вне форума Ответить с цитированием
Старый 30.03.2012, 16:57   #6
LiuLiuJons
Форумчанин
 
Регистрация: 28.12.2011
Сообщений: 124
По умолчанию

А Run должен быть классовой функцией?
Если нет, то точно также - просто перепишите весь код, что сейчас в Main, в функцию Run. И вызовите Run() в Main.
"Думай не о задаче, а о решении" (с)
LiuLiuJons вне форума Ответить с цитированием
Старый 30.03.2012, 17:09   #7
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
По умолчанию

Спасибо, LiuLiuJons) не знал что так можно делать)
Тёма_) вне форума Ответить с цитированием
Старый 30.03.2012, 17:11   #8
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
По умолчанию

Вот вся программа, возможно в будущем кому понадобиться
Код:
#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;

class Set
{
public: 
	double x, t;

	void Print(void);
};

void Set ::Print(void)
{
	cout<< "x = 14.26" << endl;
	cout<< "response = "<< t << endl;
};

void Run()
{
	Set response, h ;
	h.x = 14.26;
	response.t = 2 * h.x;
	response.Print();
	getchar();
};


void main(void)
{
	Run();
}
Тёма_) вне форума Ответить с цитированием
Старый 05.04.2012, 21:50   #9
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

Свойства желательно держать в private, а в public написать методы, получающие их.
rmv240899 вне форума Ответить с цитированием
Старый 05.04.2012, 23:52   #10
sVasilich
Форумчанин
 
Аватар для sVasilich
 
Регистрация: 16.12.2009
Сообщений: 224
По умолчанию

Цитата:
Void set(double X, …); (<- вот тут я к сожалению задание не понял, что от меня хотят, если кто понял объясните пожалуйста)
Это метод для установки значений. То, о чём говорит rmv240899 в 9 сообщении.

Примерно так:

Код:
class Set
{
private: 
	double x;
        double t;

public:
	void Print(void);

        void set(double x, double t);
};

void Set::set(double x, double t)
{
   this.x = x;
   this.t = t;
}
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
sVasilich вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы Fallenangel Помощь студентам 17 25.04.2011 23:48
классы Sined121 Общие вопросы C/C++ 3 22.12.2009 20:29
Классы с++. ahab Помощь студентам 4 19.12.2009 12:43
Классы. MAKEDON Общие вопросы C/C++ 1 24.07.2009 18:35