Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите с классом 
V
    Опции темы
yngwie19
Дата 11.9.2008, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



Привет. Вот пример кода:
Код

#include <iostream>
#include <windows.h>
#include <time.h>

using namespace std;

class Date
{
    public:
        Date();
        void PrintDate();
    private:
        int day,month,year;
};

int main()
{

    time_t *t;
    time(t);
    tm *tm1 = localtime(t);
   
Date d;

return 0;
}

Date::Date()
{
     day = tm1->tm_mday;
     month = tm1->tm_mon;
     year = tm1->tm_year;
}


Вопрос:
При компиляции возника ошибка:

 Undefined symbol 'tm1' in function Date::Date()

Почему класс Date не видит указатель tm1


PM MAIL   Вверх
mrbrooks
Дата 11.9.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



yngwie19, интересно а как конструктор знает кто такой tm1 и t соответственно?  Опиши их в классе.

типа этого
Код

#include <iostream>
#include <windows.h>
#include <time.h>

using namespace std;

class Date
{
    public:
        Date();
        void PrintDate();
    private:
        int day,month,year;
        time_t *t;
        tm *tm1;
};

int main()
{  
Date d;
d.PrintDate();
return 0;
}

Date::Date()
{    
     time(t);
     tm1 = localtime(t);
     day = tm1->tm_mday;
     month = tm1->tm_mon;
     year = tm1->tm_year;
}


Либо передавай  tm1  как параметр в конструктор.

Это сообщение отредактировал(а) mrbrooks - 11.9.2008, 14:26
PM MAIL   Вверх
Rickert
Дата 11.9.2008, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



yngwie19, tm1 - это локальный указатель функции main(), откуда о нём может быть изветсно классу?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
yngwie19
Дата 11.9.2008, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



а если допустим Я в классе Date и в фунции main() объявлю переменные с одинаковым именем, то они не будут конфликтовать ? и второй вопрос объясните как распределяется дня этих одинаковых переменных память.

Добавлено через 13 минут и 34 секунды
Просто Я не хотел чтобы у меня каждый раз выделалась память при создании объектов, а выделялась бы один раз
PM MAIL   Вверх
mrbrooks
Дата 11.9.2008, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



1. Нет
2. Как распределишь так оно и будет.

Цитата(yngwie19 @  11.9.2008,  14:46 Найти цитируемый пост)
Просто Я не хотел чтобы у меня каждый раз выделалась память при создании объектов, а выделялась бы один раз
 Поясни.

PM MAIL   Вверх
yngwie19
Дата 11.9.2008, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



все спамятью разобрался, а твой код компилится, но выдается сообщений об ошибке "first.exe вызвала ошибку приложение будет закрыто "
PM MAIL   Вверх
mrbrooks
Дата 11.9.2008, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



yngwie19, ну писал то я его экспромтом. да и код на самом деле твой  smile в данном случае  я хотел донести до тебя саму идею - но не реализацию.
PM MAIL   Вверх
varnie
Дата 11.9.2008, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 27.9.2007

Репутация: нет
Всего: 0



покажи код полностью.
PM MAIL   Вверх
Ches
Дата 12.9.2008, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 19.8.2008

Репутация: нет
Всего: 3



Цитата(varnie @  11.9.2008,  16:14 Найти цитируемый пост)
покажи код полностью

Чего тебе не хватает?
PM MAIL ICQ   Вверх
mrbrooks
Дата 12.9.2008, 07:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Ches,  smile видимо 
Цитата(varnie @  11.9.2008,  16:14 Найти цитируемый пост)
 код полностью.


PM MAIL   Вверх
Djinn
Дата 12.9.2008, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



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

class Date
{
    public:
        Date();
        void PrintDate();
        time_t *t;
        tm *tm1;
    private:
        int day,month,year;
};


после чего его и юзай:
Код

int main()
{
   
Date d;

    time(d.t);
    d.tm1 = localtime(d.t);

return 0;
}


Или сделай ф-и которые будут принимать указаные тобой значения типа: d.set_t(); d.set_tm1();...

Это сообщение отредактировал(а) Djinn - 12.9.2008, 09:15
PM MAIL   Вверх
Ches
Дата 12.9.2008, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 19.8.2008

Репутация: нет
Всего: 3



Тогда уж лучше так.
Код

#include <iostream>
#include <windows.h>
#include <time.h>

using namespace std;

class Date
{
    public:
        Date();
        void updateTime();
        void PrintDate();
    private:
        int day,month,year;
        time_t *t;
        tm *tm1;
};

int main()
{  
Date d;
d.PrintDate();
return 0;
}

Date::Date()
{    
     time(t);
     tm1 = localtime(t);
     day = tm1->tm_mday;
     month = tm1->tm_mon;
     year = tm1->tm_year;
}

void Date::udateTime()
{
     time(t);
     tm1 = localtime(t);
     ...
}


PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0865 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.