Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2007-05-31

Re[2]: работа с указателями

Hello Zeram,

Thursday, May 31, 2007, 3:53:21 PM, you wrote:

Z> Deni_S пишет:
>> Hello comp,
>>
>> объявляю собственный тип данных
>>
>> typedef CArray < Act, Act > Acti;
>>
>> Act - структура. Потом в классе делаю экземпляры этого типа
>>
>> Acti myAct;
>> Acti myAct2;
>>
>> В некоторых случаях в функцию
>>
>> BOOL Load(Acti& curRecAct)
>>
>> передаю myAct, в некоторых myAct2. Работает нормально. Но если сделать в классе
>> объявление
>> Acti& tmpAct; и попытаться присвоить этому tmpAct=myAct, компилятор ругается,
>> подстановка
>> амперсанда в разные места ничего не дает. Что делать?
>>
Z> Правильно ругается, т.к. у класса CArray не перегружен
Z> CArray<X, X>& operator = (CArray<X, X>&)

Теперь компилятор ругается по другому.

template<class TYPE, class ARG_TYPE>
class CMyArray : public CArray< Act, Act >
{
public:
CArray <Act, Act>& operator = (CArray <Act, Act>&);
};

typedef CMyArray < Act, Act > Acti;

struct CSetPtrRec{
CSetPtrRec();
Acti& tmpRec;
CMyUIntArray& arCoorMous;
}

А компилятор в ответ: error C2758: 'tmpRec' : must be initialized in constructor
base/member initializer list
see declaration of 'tmpRec'
и указывает на конструктор
CSetPtrRec::CSetPtrRec()
{
}

   2007-05-31 22:40:07 (#669534)

Re: работа с указателями

Hi!

Take a look at this code , I think , it will help you:

#include "stdafx.h"
#include <map>

struct My_Struct
{
int a;
int b;
} str;

typedef std::map <My_Struct , My_Struct> Acti;

bool Load(Acti& curRecAct)
{
return true;
}

class myClass
{
public:
void Temp(Acti& myAct);
};

int _tmain(int argc, _TCHAR* argv[])
{
Acti myAct;
Acti myAct2;

Load(myAct2);

Acti& tmpAct = myAct;

myClass cls;

cls.Temp(tmpAct);

return 0;
}

void myClass::Temp(Acti& myAct)
{
Acti& tmpAct = myAct;

}

On my comp , everything works fine.

Best regards,
Vitaliy Kulyck
Software developer
SoftServe, Inc.
52 V. Velykoho St., Lviv 79053, Ukraine
Tel: +380 32 2409999 Int. 1310
Fax: +380 32 2409080
vkuly***@s*****.com
www.softservecom.com
This email may contain confidential and privileged material for the sole use
of the intended recipient. Any review or distribution by others is strictly prohibited.
If you are not the intended recipient please contact the sender and delete all
copies.



-----Original MessageFrom: Deni_S [mailto:dens***@n*****.ru]
Sent: Thursday, May 31, 2007 12:42 PM
To: Vitaliy Kulyck
Subject: работа с указателями

Hello comp,

объявляю собственный тип данных

typedef CArray < Act, Act > Acti;

Act - структура. Потом в классе делаю экземпляры этого типа

Acti myAct;
Acti myAct2;

В некоторых случаях в функцию

BOOL Load(Acti& curRecAct)

передаю myAct, в некоторых myAct2. Работает нормально. Но если сделать в классе
объявление
Acti& tmpAct; и попытаться присвоить этому tmpAct=myAct, компилятор ругается,
подстановка
амперсанда в разные места ничего не дает. Что делать?

   2007-05-31 19:03:37 (#669471)

Re: работа с указателями

Deni_S пишет:
> Hello comp,
>
> объявляю собственный тип данных
>
> typedef CArray < Act, Act > Acti;
>
> Act - структура. Потом в классе делаю экземпляры этого типа
>
> Acti myAct;
> Acti myAct2;
>
> В некоторых случаях в функцию
>
> BOOL Load(Acti& curRecAct)
>
> передаю myAct, в некоторых myAct2. Работает нормально. Но если сделать в классе
> объявление
> Acti& tmpAct; и попытаться присвоить этому tmpAct=myAct, компилятор ругается,
> подстановка
> амперсанда в разные места ничего не дает. Что делать?
>
Правильно ругается, т.к. у класса CArray не перегружен
CArray<X, X>& operator = (CArray<X, X>&)

   2007-05-31 19:03:04 (#669470)

работа с указателями

Hello comp,

объявляю собственный тип данных

typedef CArray < Act, Act > Acti;

Act - структура. Потом в классе делаю экземпляры этого типа

Acti myAct;
Acti myAct2;

В некоторых случаях в функцию

BOOL Load(Acti& curRecAct)

передаю myAct, в некоторых myAct2. Работает нормально. Но если сделать в классе
объявление
Acti& tmpAct; и попытаться присвоить этому tmpAct=myAct, компилятор ругается,
подстановка
амперсанда в разные места ничего не дает. Что делать?

   2007-05-31 13:48:33 (#669353)