i
можно считать переменной цикла, принимающей на каждой итерации новое значение итератора. Обратиться к ней после построения списка нельзя.void Printer::addM(Moved obj)
{
Moved* tmp = new Moved[mSize];
for (int i = 0; i < mSize; i++)
{
tmp[i] = objs[i];
}
objs = new Moved[++mSize];
for (int i = 0; i < mSize - 1; i++)
{
objs[i] = tmp[i];
}
objs[mSize - 1] = obj;
Car mytmp; // для теста
cout << mytmp.getType() << endl; // для теста
cout << objs[mSize-1].getType() << endl;
Sleep(100);
}
bool operator >(const triple& n) const
{
return c > n.c;
}
using triple = std::tuple<int, int, int>;
this
— это указатель на текущий объект. *this
— это ссылка на текущий объект. Пример:class A {
public:
int x;
A(const A& other) = default;
A& operator=(const A& other) {
x = other.x;
return *this;
}
};
void test() {
A a(1); // a.x == 1
A b(2); // b.x == 2
A c(3); // c.x == 3
a = b = c;
// a.x == 3
// b.x == 3
// c.x == 3
}
a = (b = c);
. Итак, вначале b = c
. Вызывается b.operator=(c)
. Там мы вначале присваиваем c.x
(3) в b.x
, затем (и это здесь самое главное!) возвращаем ссылку на b. Далее в a = (результат)
объекту a
присваивается та самая возвращённая ссылка на b, благодаря чего в a.x
тоже оказывается 3. 4.1. Дублирование вопроса, который уже размещался на страницах Сервиса. В том числе и в случае, если вопрос был удалён модератором, или на вопрос не был дан ответ (т.е. категорически запрещается дублирование вопроса с целью повторного привлечения к нему внимания).
template <size_t size>
struct Array {
MyClass data[size];
};
Array<5> a;
a.data[2] = ...;
std::vector<std::unique_ptr<object>> world;
auto terr = std::make_unique<Terrain>();
world.push_back(std::move(terr));
world.push_back(std::make_unique<Terrain>());
object& operator=(object&&) = delete;
virtual ~object() = default;