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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2011, 16:18   #1
Blade47
 
Регистрация: 01.04.2011
Сообщений: 3
По умолчанию класс "универсальная переменная"

1. Реализовать класс var - «Универсальная переменная». Объекты экземпляры этого класса способны хранить в себе значения следующих типов: int, double, String (строка – уже готовый класс).
Например :
void main()
{
var a = 15;
var b = “Hello”;
var c = 7.8;
var d = “50”;
b = a + d;
b.Show(); // Выведет 65
if (a == b) cout << “Equal\n”; else cout << “Not Equal\n”;
}

Для класса var необходимо перегрузить арифметические операторы: +, -, *, /, +=, -=, *=, /=
И операторы сравнения: <, >, <=, >=, ==, !=
(Вся перегрузка осуществляется как функции-члены класса var)

В переменной типа var в любой момент времени может храниться только одно значение (или int, или double, или String).




народ помогите пожалуйста...седня здавать( класс строку я создал все нормально работает...а класс var не получается...помогите!!!
Blade47 вне форума Ответить с цитированием
Старый 18.04.2011, 17:38   #2
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Седня здавать... и чо? Раньше не мог свою попу поднять и написать?

Как вариант: смотри по исходникам объявления класса VARIANT или любой другой такого рода класс. И по образу и подобию делай.
mMAg вне форума Ответить с цитированием
Старый 18.04.2011, 17:53   #3
Blade47
 
Регистрация: 01.04.2011
Сообщений: 3
По умолчанию

ну давалось на выходные ,у меня строка получилось а остальное - нет((
Blade47 вне форума Ответить с цитированием
Старый 18.04.2011, 18:45   #4
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

что-нибудь типа
Код:
class var{
private:
  char type; // тип объекта, например 0 - int, 1 - double, 2 - String
  ...
};
дальше 2 варианта
1) сделать 3 поля, соответственно для int,double и String, и использовать одно из них в хзависимости от типа
2) сделать указатель на данные и приведением типов использовать нужный

1ый вариант попроще, да и в твоем случае можно и не извращаться

ну и потом пишешь нужные функции, операторы и т.д.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 18.04.2011, 19:22   #5
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Ну примерно так можно начать:
Код:
#include <iostream>
#include <stdlib.h>
#include <string.h>
class var
{
	public:
        var()
            :
            d(0),
            type(0)
        {}
		var(double _d)
			:
			d(_d),
			type(0)
		{}
		var(char* _s)
			:
			s(_s),
			type(1)
		{}
		var& operator=(double _d)
		{
            type = 0;
            d = _d;
		}

		var& operator=(char* _s)
		{
            type = 1;
            s = _s;
		}

		bool operator==(var& v)
		{
		    if (v.type != type)
                return false;
            std::cout<<d<<v.d;
            if (type == 0)
                return d == v.d;
            else if (type == 1)
                return strcmp(s, v.s);
            return false;
		}

		var& operator+(var& v)
		{
		    var a;
		    a.d = d;
            if (v.type == 0)
                a.d += v.d;
            else if (v.type == 1)
                a.d += strtod(v.s, NULL);
            return a;
		}

		void Show()
		{
		    if (type == 0)
                std::cout<<d;
            else if (type == 1)
                std::cout<<s;
		}

		char type;
		double d;
		char* s;

    private:
};
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 18.04.2011, 20:28   #6
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

народ че вы мутите?
Код:
template<class T>
class Var {
T var;
public:
...

};
Цитата:
Объекты экземпляры этого класса способны хранить в себе значения следующих типов: int, double, String
Код:
Var<int> i=10;
Var<double> d=3.14;
Var<string> s="hi";
onewho вне форума Ответить с цитированием
Старый 18.04.2011, 20:43   #7
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Цитата:
Сообщение от onewho Посмотреть сообщение
народ че вы мутите?
Код:
template<class T>
class Var {
T var;
public:
...

};
Код:
Var<int> i=10;
Var<double> d=3.14;
Var<string> s="hi";
Но ведь под задание это не подходит.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменная типа String "обнуляется" при испоьзовании TTimer (Delphi) world12_tk Помощь студентам 4 24.03.2011 03:45
"универсальная" выборка Aqil_f Microsoft Office Access 2 06.09.2010 13:03
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04