Я новичок в этом программировании. Хотя я думал, что понял основную идею классов и в том числе, я не могу понять, что я делаю неправильно здесь. Я сделал свой собственный класс с именем сетки, которая выглядит следующим образом:Класс не доступен, несмотря на включение
--- Grid.h ---
class Grid{
public:
Grid(HWND wnd);
public:
void paint(CDC &dc, int sqr, bool axis); //paint the grid
void tag(CDC &dc);
private:
int square; //square size
CRect frame; //client area size
};
--- Grid.cpp ---
#include "stdafx.h"
#include "Grid.h"
Grid::Grid(HWND wnd)
{
CRect rect;
GetClientRect(wnd, &rect); // get client area size
frame.left = rect.right/2 - 387; // fit frame to margin
frame.right = frame.left + 774;
frame.top = rect.bottom - 874;
frame.bottom = rect.bottom - 100;
}
void Grid::paint(CDC &dc, int sqr, bool axis){
square = sqr; // paint grid
CPen penWhite;
penWhite.CreatePen(PS_SOLID, 1, RGB(255, 255, 255));
dc.SelectObject(&penWhite);
dc.Rectangle(frame);
dc.MoveTo(frame.left + square, frame.top);
for (int i = 1; i < 18; i++){
dc.LineTo(frame.left + square * i, frame.bottom);
dc.MoveTo(frame.left + square + square * i, frame.top);
}
dc.MoveTo(frame.left, frame.top + square);
for (int i = 1; i < 18; i++){
dc.LineTo(frame.right, frame.top + square * i);
dc.MoveTo(frame.left, frame.top + square + square * i);
}
[...]
Теперь, что я пытаюсь сделать, это добавить объект этого класса из другого класса. Как вы могли догадаться, это приложение MFC, которое должно использовать функциональность, которую я предоставляю Grid. Поэтому я добавил
--- MainFrm.cpp ---
[...]
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
Grid theGrid{ GetSafeHwnd() };
}
CMainFrame::~CMainFrame()
{
}
[...]
, в котором я позже позвонить:
void CMainFrame::OnPaint()
{
CPaintDC dc(this); // get device context for paint
// get current window size
CRect rect;
GetClientRect(&rect); // get current client area size
// fill background black
CBrush brushBlack;
brushBlack.CreateSolidBrush(RGB(0, 0, 0));
dc.SelectObject(&brushBlack);
dc.FillRect(rect, &brushBlack);
// paint grid
theGrid.paint(dc, 43, 1);
ReleaseDC(&dc);
} // end OnPaint()
... но компилятор дает мне ошибку C2065: 'theGrid': необъявленный идентификатор в то время как Intellisense лает на theGrid.paint (dc, 43, 1);
Что я здесь делаю неправильно? Мне просто нужен объект Grid, созданный из MainFrm, доступ к которому имеет каждая функция.
С наилучшими пожеланиями, Michen
вы также должны включать в себя заголовок в MainFrm.cpp – user463035818
** # включить «Grid.h» ** в начале MainFrm .cpp – Harry
Я уже это сделал, но забыл упомянуть. – Michen