forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Проблема с класами в MFC (http://forum.boolean.name/showthread.php?t=12841)

den 06.07.2010 21:36

Проблема с класами в MFC
 
Всем привет!
Недавно у меня возникла следующая проблема в C++, компилятор ругается на строчки:
Цитата:

BOOL CserverDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

m_pListenSocket.SetParentDlg(this); //ругается вот сюда...
m_pConnectSocket.SetParentDlg(this); // ...и сюда
m_pListenSocket.Create(2000); //Создаем сокет на 2000 порту

return TRUE; // return TRUE unless you set the focus to a control
}
Как ругантся:
Цитата:

error C2664: 'CMySocket::SetParentDlg' : cannot convert parameter 1 from 'CserverDlg *const ' to 'CMySocket::CServerDlg *'
и

Цитата:

error C2664: 'CMySocket::SetParentDlg' : cannot convert parameter 1 from 'CserverDlg *const ' to 'CMySocket::CServerDlg *'
Помогите подправить код!:"(
Если надо могу выложить весь проект (пользуюсь Visual Studio 2005)
Взарание спасибо!

Tadeus 06.07.2010 21:49

Ответ: Проблема с класами в MFC
 
Хорс ниасилил, дак вперёд в С++ -__-

den 06.07.2010 22:13

Ответ: Проблема с класами в MFC
 
Цитата:

Хорс ниасилил, дак вперёд в С++ -__-
Вообщето блиц и хорс я бросил ещё давно (и совсем не из-за того что не осилил). Если ты сым ничё не соображаеш, но сиди и молчи, ок?
----------------------------------------------------------------
Ну так вы мне поможите с кодом?

jimon 06.07.2010 22:50

Ответ: Проблема с класами в MFC
 
выложи лучше сразу весь код

den 06.07.2010 23:13

Ответ: Проблема с класами в MFC
 
Цитата:

выложи лучше сразу весь код
Я лучше весь проект выложу (там он просто состоит из нескольких файлов)
---------> http://depositfiles.com/files/f90d8xazo <-----------------

jimon 07.07.2010 01:08

Ответ: Проблема с класами в MFC
 
от такого говнокодища (это прям нечто, плюс еще ncb файл выложить в архив, да) компилятор падает, я так толком и не понял за 5 минут из-за чего он падает

ошибка в том что имена в C++ чувствительны к регистру, потому CServerDlg переименуй в CserverDlg и вынеси его объявление из класса, вот так :
Код:

class CserverDlg;

class CMySocket : public CSocket
{
public:
public:
        CserverDlg* m_pDlg;
        CMySocket();
        virtual ~CMySocket();

        void CMySocket::SetParentDlg(CserverDlg *pDlg)
{
    m_pDlg=pDlg; //Указатель на диалоговое окно
}
public:
        virtual void OnAccept(int nErrorCode);
public:
        virtual void OnReceive(int nErrorCode);
};


den 07.07.2010 12:50

Ответ: Проблема с класами в MFC
 
Спасибо, jimon , помогло!

den 07.07.2010 14:40

Ответ: Проблема с класами в MFC
 
А вот ещё одна, в файле MySocket.cpp :
Код:
Цитата:

void CMySocket::OnAccept(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
AfxMessageBox(LPCTSTR("Соединение"));
m_pDlg->OnAccept();
this->OnAccept(nErrorCode);
CSocket::OnAccept(nErrorCode);
}

void CMySocket::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
AfxMessageBox(LPCTSTR("Данные получены"));
m_pDlg->OnReceive();
this->OnReceive(nErrorCode);
CSocket::OnReceive(nErrorCode);
}
Лог:
Цитата:

1>------ Build started: Project: server, Configuration: Debug Win32 ------
1>Compiling...
1>MySocket.cpp
1>d:\рабочий стол\c++\my c++ projects\новая папка\sssss\server\server\mysocket.cpp(27) : error C2027: use of undefined type 'CserverDlg'
1> d:\рабочий стол\c++\my c++ projects\новая папка\sssss\server\server\mysocket.h(23) : see declaration of 'CserverDlg'
1>d:\рабочий стол\c++\my c++ projects\новая папка\sssss\server\server\mysocket.cpp(27) : error C2227: left of '->OnAccept' must point to class/struct/union/generic type
1>d:\рабочий стол\c++\my c++ projects\новая папка\sssss\server\server\mysocket.cpp(36) : error C2027: use of undefined type 'CserverDlg'
1> d:\рабочий стол\c++\my c++ projects\новая папка\sssss\server\server\mysocket.h(23) : see declaration of 'CserverDlg'
1>d:\рабочий стол\c++\my c++ projects\новая папка\sssss\server\server\mysocket.cpp(36) : error C2227: left of '->OnReceive' must point to class/struct/union/generic type
1>Build log was saved at "file://d:\Рабочий стол\C++\My C++ Projects\Новая папка\sssss\server\server\Debug\BuildLog.htm"
1>server - 4 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Тут тоже скорей всего что то с класами, просто никогда с класами не работал, а вот щас пришлось...

jimon 07.07.2010 15:38

Ответ: Проблема с класами в MFC
 
добавь include CserverDlg в MySocket.cpp, и почитай книжки

falcon 07.07.2010 21:34

Ответ: Проблема с класами в MFC
 
Цитата:

Сообщение от jimon (Сообщение 153391)
добавь include CserverDlg в MySocket.cpp, и почитай книжки

а лучше в обратном порядке.....

den 07.07.2010 22:28

Ответ: Проблема с класами в MFC
 
Цитата:

добавь include CserverDlg в MySocket.cpp
ты имел в виду #include "serverDlg.h" добывить в самое начало файла MySocket.cpp ?
Всё равно не помогает, пишет:
Цитата:

d:\рабочий стол\c++\my c++ projects\новая папка\sssss\server\server\mysocket.cpp(28) : error C2248: 'CserverDlg::OnAccept' : cannot access protected member declared in class 'CserverDlg'
1> d:\рабочий стол\c++\my c++ projects\новая папка\sssss\server\server\serverdlg.h(31) : see declaration of 'CserverDlg::OnAccept'
1> d:\рабочий стол\c++\my c++ projects\новая папка\sssss\server\server\serverdlg.h(9) : see declaration of 'CserverDlg'
1>d:\рабочий стол\c++\my c++ projects\новая папка\sssss\server\server\mysocket.cpp(37) : error C2248: 'CserverDlg::OnReceive' : cannot access protected member declared in class 'CserverDlg'
1> d:\рабочий стол\c++\my c++ projects\новая папка\sssss\server\server\serverdlg.h(32) : see declaration of 'CserverDlg::OnReceive'
1> d:\рабочий стол\c++\my c++ projects\новая папка\sssss\server\server\serverdlg.h(9) : see declaration of 'CserverDlg'

jimon 07.07.2010 23:02

Ответ: Проблема с класами в MFC
 
почитай книжки :)

den 07.07.2010 23:20

Ответ: Проблема с класами в MFC
 
Цитата:

Сообщение от jimon (Сообщение 153469)
почитай книжки :)

Да я почитаю! Обязательно! Просто мне сейчас не дочтение ...
Мне прогу нужно доделать:"(
Помогите пожалуста...:"(

-=SCiP=- 08.07.2010 01:17

Ответ: Проблема с класами в MFC
 
=) ну. без полного алгоритма трудно чем то помочь.
а ты прогу просто для себя делаешь или для учебы?
если просто для себя, то можно же не всю книжку читать а про классы и их капризы. (Но лучше потом все прочесть) это видь хорошее лекарство от головной боли над мелкими проблемами.

den 08.07.2010 12:33

Ответ: Проблема с класами в MFC
 
Цитата:

=) ну. без полного алгоритма трудно чем то помочь.
а ты прогу просто для себя делаешь или для учебы?
если просто для себя, то можно же не всю книжку читать а про классы и их капризы. (Но лучше потом все прочесть) это видь хорошее лекарство от головной боли над мелкими проблемами.
Да только для себя, для учёбы мне ещё рано я толь в 9 класе учюсь (после лета уже в 10...). Я вообще интернет чат пишу (типа аськи), вот решил с написания сервера и клиента. По началу скачивал готовые проекты, доведёные до ума, но потом подумал что лучше сам начну писать (по учебникам, мануалам ...) и вот клиент вроде написал , а вот с сервером байда какаято получается.
А вообще вот готовые проекты (сервер (нерабочий), и клиент (вроде рабочий)) ----> http://depositfiles.com/files/2h636ek01
__________________
Мой сайт ---> http://xakni.ucoz.ru


Часовой пояс GMT +4, время: 08:15.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot