(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 (Текущая страница)
Ну так почему правильно писать так:
void setFunc(int a, int b, char c) { this->someInt1 = a; this->someInt2 = b; this->someChar = c; }
а не так?
void setFunc(int a, int b, char c) { someInt1 = a; someInt2 = b; someChar = c; }
А все, понял.
Правильно для чего? Эти 2 способа получения значений одинаковы, только в первом случае this используется явно(ты сам его ставишь), а во втором неявно(компилятор это и так делает для имен полей и методов данного объекта).
С точки зрения компилятора лучше второй, неявный способ. С точки зрения человека более удобно читать первый вариант, т.к. сразу видно, какие переменные относятся к объекту.
- 1
- 2 (Текущая страница)
Возможность добавлять комментарии была ограничена
CollectableItemData.cs
[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]