danilaxxl danilaxxl

CollectableItemData.cs

[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]

GoloGames GoloGames

vadya_ivan, рад, что вам игра показалась интересной : )

P.S. Кстати уже доступна бесплатная демо-версия в Steam

vadya_ivan vadya_ivan

Визуал, задумка, музыка , механики, все в цель

GoloGames GoloGames

Ato_Ome, спасибо за позитивные эмоции, будем стараться : )

Ato_Ome Ato_Ome

Потрясающий результат, все так четенько, плавненько)
То ли саунд, то ли плавность напомнили мне игрушку World of Goo, удачи вам в разработке и сил побольше дойти до релиза!)

Cute Fox Cute Fox

Graphics are a little cool, good HD content. But this game doesn't cause nary interest me.
However the game is well done.

GMSD3D GMSD3D

Почему действие после всех условий выполняется?
[step another object]

Zemlaynin Zemlaynin

Jusper, Везде, но наугад строить смысла нет. Нужно разведать сперва территорию на наличие ресурсов.

Jusper Jusper

Zemlaynin, а карьеры можно будет везде запихать?
Или под них "особые" зоны будут?

Zemlaynin Zemlaynin

Это так скажем тестовое строительство, а так да у города будет зона влияния которую нужно будет расширять.

Jusper Jusper

А ссылка есть?

Jusper Jusper

Я не оч понял из скриншота, как вообще работает стройка. У игрока будет как бы поле строительства?

split97 split97

в игру нужно добавить время песочные часы в инвентаре, пока бегаешь наберается усталость и ты очень тормозной мобильный враг просто убевает

split97 split97

в игру нужно добавить время песочные часы в инвентаре, пока бегаешь наберается усталость и ты очень тормозной мобильный враг просто убевает

ViktorJaguar ViktorJaguar

Почему я нигде не могу найти нормальный туториал, где покажут как экипировать предмет (например, меч) в определенную (выделенную под оружие) ячейку???

Логотип проекта Программирование

(C++) Присвоение класса внутри его функции

Есть функция:

void someClass::function(someClass newOne) 
{
	....
	someClass newOneFunction = newOne; 		// простое присвоение переданного класса
	someClass newTwoFunction = ???				// как присвоить также класс, от которого вызывалась функция
	....
}

Вот ее вызов:

....
someClass test(1, 2, 'c');
someClass testFunction(3, 1, 'o');
test.function(testFunction);
....

Ответ

Praytic, ну тут есть два варианта, либо конструктор копирования, либо метод, который копирует значения в уже существующей.

class SomeClass {
private:
	int x, y, z;
public:
    // Конструктор копирования
	SomeClass(const SomeClass* obj) {
		this->Copy(obj);
	}
	// Копирование
	void Copy(const SomeClass* obj) {
		this->x = obj->x;
		this->y = obj->y;
		this->z = obj->z;
	}
}

Как юзать:

SomeClass obj1 = ....
// Конструктор копирования
SomeClass obj2(&obj1);
// Копирование
obj1.Copy(&obj2);

Смотрите также:


Комментарии



  • 1 (Текущая страница)
  • 2

я, конечно, давным давно ничего не писал на c++, но разве оператор this там не работает?

Да, можно юзать this

class SomeClass {
private:
	int x, y, z;
public:
	void setX(int x) {
		this->x = x;
	}
}

но мне надо не одно значение класса присваивать, а все разом, как в примере с newOne и newOneFunction
все значения одного класса всем значениям другого

Praytic, ты хочешь скопировать все значения одного объекта в другой объект?

да

Praytic, ну тут есть два варианта, либо конструктор копирования, либо метод, который копирует значения в уже существующей.

class SomeClass {
private:
	int x, y, z;
public:
    // Конструктор копирования
	SomeClass(const SomeClass* obj) {
		this->Copy(obj);
	}
	// Копирование
	void Copy(const SomeClass* obj) {
		this->x = obj->x;
		this->y = obj->y;
		this->z = obj->z;
	}
}

Как юзать:

SomeClass obj1 = ....
// Конструктор копирования
SomeClass obj2(&obj1);
// Копирование
obj1.Copy(&obj2);

Спасибо. Кстати, почему нельзя так писать?

	// Копирование
	void Copy(const SomeClass obj) {
		x = obj.x;
		y = obj.y;
		z = obj.z;
	}

Praytic, можно, просто лень было писать дважды. Ну и собственно с указателями нужно их разыменовывать при обращении к методам и полям класса с помощью такого оператора ->

alexprey:

Praytic, можно, просто лень было писать дважды. Ну и собственно с указателями нужно их разыменовывать при обращении к методам и полям класса с помощью такого оператора ->

Что значит писать дважды? Это я просто переписал вашу функцию без использования указателей. По моему мнению она работает точно также (только копию класса создает), но люди по-умнее говорят, что так писать нельзя и нужно по-больше указателей использовать. Почему?

Если тебе нужно создать полный клон по полям, для этого хорошо подходит конструктор копирования по умолчанию - это конструктор копирования который заранее определен для класса.
Он вызывается в двух случаях:

MyClass A(...);
My Class B(A);
MyClass A(...);
MyClass B = A;		//здесь это не операция присваивания, а копирование 
  • 1 (Текущая страница)
  • 2

Возможность добавлять комментарии была ограничена