Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

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

Подписчиков: -1
Последний выпуск: 19.06.2015

Указатель на класс

324
02 июня 2006 года
AndreySar
532 / / 01.08.2004
В качестве параметра функции передается указатель на класс. В этой функции происходит инициализация переменных класса. При возврате из функции переменные обнуляются.
Что надо сделать, что бы этого не происходило.

Класс содержит только конструктор и деструктор, а также несколько переменных
3
02 июня 2006 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by AndreySar

Что надо сделать, что бы этого не происходило.


Правильно писать код.

499
02 июня 2006 года
madjahed
149 / / 14.01.2004
Цитата:
Originally posted by AndreySar
В качестве параметра функции передается указатель на класс. В этой функции происходит инициализация переменных класса. При возврате из функции переменные обнуляются.
Что надо сделать, что бы этого не происходило.

Класс содержит только конструктор и деструктор, а также несколько переменных


Покажи код, тогда и обсудить можно будет

324
02 июня 2006 года
AndreySar
532 / / 01.08.2004
Цитата:
Originally posted by madjahed
Покажи код, тогда и обсудить можно будет


1.

 
Код:
class AFX_EXT_CLASS CArSantRecord
{
public:
    CArSantRecord();
    virtual ~CArSantRecord();

    // Идентификатор записи в базе
    CString strDocID;
}


2.
 
Код:
CArSantRecord rs;

if(database->GetFirstRecord())
{
    while(database->GetNextRecord(&rs))
    {
        m_table.InsertItem(nItem, rs.strDocID);
    }
}


3.
 
Код:
GetNextRecord(CArSantRecord *rs)
{
    rs.strDocID = "1";
}
5
02 июня 2006 года
hardcase
4.5K / / 09.08.2005
у тебя как я понял конструктор статический.
сделай виртуальным.
3
03 июня 2006 года
Green
4.8K / / 20.01.2000
[QUOTE=AndreySar]3.
 
Код:
GetNextRecord(CArSantRecord *rs)
{
    rs.strDocID = "1";
}
[/QUOTE]
Этот код, вообще, не рабочий.

[QUOTE=hardcase]
у тебя как я понял конструктор статический.
сделай виртуальным.
[/QUOTE]
Ты сам то понял, что сказал?
Какой виртуальный конструкор? :D

Ты имел в виду фабрику объектов? Причем тут она? :D
350
09 июня 2006 года
cheburator
589 / / 01.06.2006
[QUOTE=AndreySar]1.
 
Код:
class AFX_EXT_CLASS CArSantRecord
{
public:
    CArSantRecord();
    virtual ~CArSantRecord();

    // Идентификатор записи в базе
    CString strDocID;
}


2.
 
Код:
CArSantRecord rs;

if(database->GetFirstRecord())
{
    while(database->GetNextRecord(&rs))
    {
        m_table.InsertItem(nItem, rs.strDocID);
    }
}


3.
 
Код:
GetNextRecord(CArSantRecord *rs)
{
    rs.strDocID = "1";
}
[/QUOTE]
Как такой код вообще компилируется? Компилятор должен сказать что-то вроде Can't convert CArSantRecord& to CArSantRecord*
350
09 июня 2006 года
cheburator
589 / / 01.06.2006
[QUOTE=hardcase]у тебя как я понял конструктор статический.
сделай виртуальным.[/QUOTE]
Конструкторы не бывают ни статическими, ни виртуальными.
16K
10 июня 2006 года
Deeoni$
21 / / 09.06.2006
[QUOTE=AndreySar]
3.
 
Код:
GetNextRecord(CArSantRecord *rs)
{
    rs.strDocID = "1";
}
[/QUOTE]

вообще-то компилится не должно это, надо так написать rs->strDocID = "1";
585
15 июня 2006 года
honeybeer
297 / / 06.09.2004
что мешает сделать так
 
Код:
class TSomeClass
{
public:
    TSomeClass();
    virtual ~TSomeClass(void);
    void SetID(int value){some_data = value;}
private:
    int some_data;
};

а потом так
Код:
int main(int argc, char* argv[])
{
    TSomeClass cls;
SomeFunction(cls);
return 0;
}

void SomeFunction(TSomeClass& inst)
{
    inst.SetID(123);
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог