Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для bretba
63 / 58 / 13
Регистрация: 24.07.2011
Сообщений: 343

Разложить все "по полочкам"

22.11.2011, 22:49. Показов 1131. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ правильно ли я делаю:
описание класса в заголовочном файле .h
описание методов класса в исполняемом файле .cpp(тут #include заголовочный файл класса)
использование данного класса в исполняемом файле .cpp(тут #include исполняемый файл с методами)

Правильно?Я посмотрел у MFC...там вроде так))

Добавлено через 22 часа 50 минут
тут че никто не знает про это оО?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.11.2011, 22:49
Ответы с готовыми решениями:

Стеганография в BMP попробуем вместе разложить все по полочкам
Здравствуйте уважаемые форумчане! Столкнулся с задачей написать программный продукт, реализующий стеганографический метод. ...

Распишите все по полочкам
Просьба подробно расписать за , что отвечает каждая строчка данной программы. #include "stdafx.h" #include...

Алгоритм LZW - разложить все по полочкам.
Нужно написать алгоритм LZW сжатия/разжатия... Не могу понять, какие шаги потребуются... Пока в моем представлении это выглядит так: ...

8
Хочу в Исландию
 Аватар для skaa
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
22.11.2011, 23:19
Точно, никто не знает! Я знаю - всё правильно делаешь!
0
 Аватар для bretba
63 / 58 / 13
Регистрация: 24.07.2011
Сообщений: 343
23.11.2011, 20:29  [ТС]
Тогда объясните почему не работает данный код:

заголовочный файл,где лежит класс(CWindow.h):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <windows.h>
#include <windowsx.h>
#include<stdlib.h>
#include <wchar.h>
 
class WINDOWMAIN
{
public:
    HWND hwnd;
    void Create_Window(LPCWSTR Name_Prog);
    void Create_Button(LPCWSTR text,int x,int y,int x2,int y2);
    void Show_Window();
    bool Reg_Window(HINSTANCE hInstance,LPCWSTR lpzClassName,WNDPROC lpfnWndProc);
    HDC Get_DC(HWND hwnd);
private:
    WNDCLASS we;
};
Исполняемый файл,с описанием методов класса(CWindow.cpp):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "CWindow.h"
bool WINDOWMAIN::Reg_Window(HINSTANCE hInstance, LPCWSTR lpzClassName,WNDPROC lpfnWndProc)
   {
       ZeroMemory(&we,sizeof(we));
       we.lpfnWndProc=lpfnWndProc;
       we.hInstance=hInstance;
       we.hIcon=LoadIcon(NULL,IDI_APPLICATION);
       we.hCursor=LoadCursor(NULL,IDC_ARROW);
       we.hbrBackground=GetStockBrush(WHITE_BRUSH);
       we.lpszClassName= lpzClassName;
      if (RegisterClass(&we)!=0) 
            return true;
              else 
            return false;
   }
 
  void WINDOWMAIN::Create_Window(LPCWSTR Name_Prog)
  {
    hwnd=CreateWindow(L"MyWindowClass",Name_Prog,
WS_OVERLAPPEDWINDOW,500,200,230,250,
HWND_DESKTOP,NULL,NULL,NULL);  
  }
 
  void WINDOWMAIN::Show_Window()
  {
ShowWindow(hwnd,SW_SHOW);       
  }
 
 HDC WINDOWMAIN::Get_DC(HWND hwnd)
  {
     if (GetDC(hwnd)!=NULL)
      return GetDC(hwnd);
     else
         return NULL;
  }
И главный исполняемый файл,где будет использоваться данный класс(Main.cpp):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "CWindows.cpp"
LRESULT CALLBACK  WndProc(HWND hWnd,UINT uMsg, WPARAM wParam, LPARAM lParam);
 
WINDOWMAIN MyObject;
  int WINAPI  WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int )
 
   {
       MSG Msg; 
      
       if (MyObject.Reg_Window(hInstance,L"MyWindowClass",WndProc)) 
      {
          MyObject.Create_Window(L"Project");
          MyObject.Show_Window();
          dc=MyObject.Get_DC(MyObject.hwnd);
          
 
         while(GetMessage(&Msg,NULL,0,0))
           {    
             DispatchMessage(&Msg);
             TranslateMessage(&Msg);
           }
      }
return 0;
}
 
LRESULT CALLBACK  WndProc(HWND hWnd,UINT uMsg, WPARAM wParam, LPARAM lParam)
{   
    switch(uMsg)
{
 
    case WM_DESTROY:
PostQuitMessage(0);
    break;
 
default:
return(DefWindowProc(hWnd,uMsg,wParam,lParam)) ; 
}
}
И вся эта шляпа выдает вот такие ошибки:

1>Main.obj : error LNK2005: "public: bool __thiscall WINDOWMAIN::Reg_Window(struct HINSTANCE__ *,wchar_t const *,long (__stdcall*)(struct HWND__ *,unsigned int,unsigned int,long))" (?Reg_Window@WINDOWMAIN@@QAE_NPAUHINSTAN CE__@@PB_WP6GJPAUHWND__@@IIJ@Z@Z) already defined in CWindows.obj
1>Main.obj : error LNK2005: "public: void __thiscall WINDOWMAIN::Create_Window(wchar_t const *)" (?Create_Window@WINDOWMAIN@@QAEXPB_W@Z) already defined in CWindows.obj
1>Main.obj : error LNK2005: "public: void __thiscall WINDOWMAIN::Show_Window(void)" (?Show_Window@WINDOWMAIN@@QAEXXZ) already defined in CWindows.obj
1>Main.obj : error LNK2005: "public: struct HDC__ * __thiscall WINDOWMAIN::Get_DC(struct HWND__ *)" (?Get_DC@WINDOWMAIN@@QAEPAUHDC__@@PAUHWN D__@@@Z) already defined in CWindows.obj
1>C:\C++\MyGame\Debug\game.exe : fatal error LNK1169: one or more multiply defined symbols found


ЧТО ДЕЛАТЬ?ПОМОГИТЕ))
0
Хочу в Исландию
 Аватар для skaa
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
23.11.2011, 20:50
У меня другие ошибки выдаёт, первая из них:
error C2065: 'dc' : undeclared identifier.
Переменная dc действительно не определена (файл Main.cpp, строка 14).
0
 Аватар для bretba
63 / 58 / 13
Регистрация: 24.07.2011
Сообщений: 343
24.11.2011, 00:52  [ТС]
тьфу ты))я ее просто стер нечаянно,когда сюда код выкладывал

Вот как должен выглядеть Main.cpp:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "CWindows.cpp"
 
LRESULT CALLBACK  WndProc(HWND hWnd,UINT uMsg, WPARAM wParam, LPARAM lParam);
 
HDC dc;
WINDOWMAIN MyObject; 
 
  int WINAPI  WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int )
 
   {
       MSG Msg;   
      
      
 
       if (MyObject.Reg_Window(hInstance,L"MyWindowClass",WndProc)) 
      {
          MyObject.Create_Window(L"Project");
          MyObject.Show_Window();
          dc=MyObject.Get_DC(MyObject.hwnd);
          
 
         while(GetMessage(&Msg,NULL,0,0))
           {    
             DispatchMessage(&Msg);
             TranslateMessage(&Msg);
           }
      }
return 0;
}
 
LRESULT CALLBACK  WndProc(HWND hWnd,UINT uMsg, WPARAM wParam, LPARAM lParam)
{
 
    switch(uMsg)
{
 
    case WM_DESTROY:
PostQuitMessage(0);
    break;
 
default:
return(DefWindowProc(hWnd,uMsg,wParam,lParam)) ; 
}
}
0
Хочу в Исландию
 Аватар для skaa
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
24.11.2011, 01:59
А так у меня всё нормально компилируется. Пробовал в Visual Studio 2008.
0
Заблокирован
24.11.2011, 02:04
bretba,

Вам редактор связей уже все сообщил. Почему вы игнорируете его сообщения?!

Он нашел два определения одних и тех же функций. Это произошло у вас потому, что вы включили модуль #include "CWindows.cpp" в тот модуль, где у вас объявлена основная точка входа в программу, то есть WinMain.

То есть скорей всего произошло следующее. Компилятор отдельно скомпилировал модуль CWindows.cpp, создал таблицу внешних символов для него. Затем отдельно откомпилировал главный модуль, в который также вы включили исхлодный код предыдущего модуля, и для него создал таблицу внешних символов. И обнаружилось, что одни и те же функции определены в двух единицах компиляции. Он вам на это пожаловался!

Уберите указанный #include "CWindows.cpp" из основной программы.
1
Хочу в Исландию
 Аватар для skaa
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
24.11.2011, 02:14
Да... я #include "CWindows.cpp" не заметил...
1
 Аватар для bretba
63 / 58 / 13
Регистрация: 24.07.2011
Сообщений: 343
24.11.2011, 09:07  [ТС]
Все понял вроде))А в основной нужно как я понял подключить только CWindows.h)))

Спасибо всем))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.11.2011, 09:07
Помогаю со студенческими работами здесь

Разложить скрипт по полочкам
function int2ip(num) { var ip = num % 256; for (var i = 1; i &lt;= 3; i++) { num = Math.floor(num / 256); ip = num % 256 + '.' + ip; ...

разложите все по полочкам
Здравствуйте! помогите разобраться с прогой: смысл проги в том, что по траектории (восьмерка лежащая) движется фугура (звезда), звезда по...

Объясните про внедрение зависимостей в .net core. Разложите все по полочкам
Если сервис зарегистрировать как singleton (AddSingleton). То он будет один для всех пользователей? Если так, то как я понимаю singleton...

Категории по полочкам
Есть меню &lt;div class=&quot;panel-body&quot;&gt; &lt;ul class=&quot;nav nav-pills nav-stacked category-menu&quot;&gt; @foreach($categories as...

Разложите по полочкам ))
Внизу приведена полностью работающая программа и дана задача. Не могли бы вы ясно и четко написать пояснения к каждой строке )) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru