Помощь с указателями

Вот рабочая программа, но нужно сделать так, чтобы был реализован способ передачи объекта класса rect по указателю из функции main() в функции increase() и decrease(). Кто может помочь и объяснить?

Source.cpp

include <iostream>

include <Windows.h>

include <conio.h>

include «Header.h»

using namespace std;

int main()
{
COORD point_left, point_right;
color color[] = { (255, 0, 0), (255,255,0), (0,255,0),(255,0,255),(0,255,255) };
const int MAX = 10;

Rect fn;
fn.get_rect(&point_left, &point_right);

for (int i = 0; i < MAX; i++) {
fn.draw_rect();
friendfunc_increase(&point_left, &point_right);
fn.set_rect(point_left, point_right, color[(i + 1) % 5]);
Sleep(500);
}

for (int i = MAX; i >= 0; i--) {
fn.draw_rect();
friendfunc_decrease(&point_left, &point_right);
fn.set_rect(point_left, point_right, color[(i — 1) % 5]);
Sleep(500);
}

system(«pause»);
_getche();
}

Header.h

struct color
{
int R;
int G;
int B;
};

class Rect
{
private:
COORD left_bottom;
COORD right_top;
color color_type;
public:
Rect(COORD left = { 420, 300 }, COORD right = { 540, 200 }, color color = { 250,0,0 })
: left_bottom(left), right_top(right), color_type(color) {}

void set_rect(COORD left, COORD right, color color)
{
left_bottom = left;
right_top = right;
color_type = color;
}
void get_rect(COORD left, COORD right) {
(left) = left_bottom;
(
right) = right_top;
}

void draw_rect()
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO curs;
GetConsoleCursorInfo(hStdout, &curs);
curs.bVisible = FALSE;
SetConsoleCursorInfo(hStdout, &curs);
HWND hWindow = NULL;
HDC hDeviceContext;
HPEN hPen;
hWindow = GetConsoleWindow();
hDeviceContext = GetDC(hWindow);
hPen = CreatePen(PS_SOLID, 1, RGB(color_type.R, color_type.G, color_type.B));
SelectObject(hDeviceContext, hPen);

int high = left_bottom.Y — right_top.Y;
for (int j = 0; j < high; j++) {
MoveToEx(hDeviceContext, left_bottom.X, right_top.Y + j, NULL);
LineTo(hDeviceContext, right_top.X, right_top.Y + j);
}

}
friend int friendfunc_increase(COORD, COORD);
friend int friendfunc_decrease(COORD, COORD);
};

int friendfunc_increase(COORD p1, COORD p2) {

(p1).Y += 15;
(
p2).Y -= 15;
(p1).X -= 30;
(
p2).X += 30;
return(0);
}

int friendfunc_decrease(COORD p1, COORD p2) {
(p1).Y -= 15;
(
p2).Y += 15;
(p1).X += 30;
(
p2).X -= 30;
return(0);
}

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.