forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Объект & функция (http://forum.boolean.name/showthread.php?t=5070)

DRAG 20.11.2007 10:23

Объект & функция
 
Вот есть проблемка :

например есть структура и объект obj и obj2
struct z
{
int x;
int y;
int z;
}obj,obj2;


Нужно сделать функцию которая в качестве параметра
принимала объекты структуры.
Ну типа этого :

void function( object )
{
object.x = 100;
object.y = 200;
object.z = 300;
}

dimanche13 20.11.2007 11:40

Re: Объект & функция
 
Возможность такая есть, надо в параметр ф-ции направлять указатель на объект. Но раз уж ты пишешь на С++, то надо юзать методы-класса :
Код:

class z{
 int x,y,z;
 init(xset,yset,zset) { x = xset; y = yset; z = zset; }
}

z obj;
obj.Init(100,200,300)

Если тебе надо просто инициализировать объект при создании, то можно заюзать конструктор. Это метод класса который имеет название такое же как и сам класс и вызывается при создании объекта.
Код:

class z{
 int x,y,z;
 z(xset,yset,zset) { x = xset; y = yset; z = zset; }
}

z obj;
obj(100,200,300)

Так же его можно перегружать, но это уже другая история...

DRAG 20.11.2007 21:52

Re: Объект & функция
 
Большой спасиб =)
Всё получилось у мну сделать!!!

Что такое конструктор знаю, но что мона так:
Код:

obj(100,200,300)
не знал...=)

alcoSHoLiK 21.11.2007 01:05

Re: Объект & функция
 
dimanche13
Не факт, что на С++)

DRAG
Просто нужно по адресу, а не по значению передавать.
Код:

typedef struct {
        int x;
        int y;
        int z;
} MegaType;

void func(MegaType* object)
{
        object->x = 10;
        object->y = 20;
        object->z = 30;
}

// Пример использования
MegaType pos = { 0, 0, 0};

func(&pos);
// теперь pos.x == 10, pos.y == 20, pos.z == 30


impersonalis 21.11.2007 01:15

Re: Объект & функция
 
Цитата:

Просто нужно по адресу, а не по значению передавать.
или по ссылке
Цитата:

void func(MegaType &object)
{
object.x = 10;
object.y = 20;
object.z = 30;
}
Имхо, логичней. Хотя вариант alcoSHoLiK мне импонирует в сложных системах - меньше заморочек с TypeCast, который не все объекты имеют в должной степени, да и преобразовний с контейнерами типа CPtrArray будет меньше.

alcoSHoLiK 21.11.2007 02:16

Re: Объект & функция
 
Автор все-таки точно не указал, использует он С или С++. Ссылки часто удобней, но в С их нет.

DRAG 02.12.2007 03:18

Re: Объект & функция
 
Я на С++..
Просто ща шару на HGE пишу, а так получилось что в коде мона утонуть))
Он-то почти везде одинаковый но проблемма была с объектами.....
Теперь объём кода сократился примерно на 60% !!!!!!!!!!!!
Некоторые куски не запихивал в функции, ну мне так удобнее.
Просто не думал что такие проблы будут.
Строк примерно ~900.. И гдето ещё столько же надо написать, пишу две недели))


Часовой пояс GMT +4, время: 09:46.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot