Fehler in der Objekt Init, aus dem ich nicht schlau werde
-
Guten Tag allerseits,
ich hoffe ich finde hier ein bißchen Hilfe.
Mein Problem sind folgende Fehler :
test2dlg.h(54) : error C2146: syntax error : missing ';' before identifier 'm_sConnectSocket'
test2dlg.h(54) : error C2501: 'CMySocket' : missing storage-class or type specifiers
test2dlg.h(54) : error C2501: 'm_sConnectSocket' : missing storage-class or type specifiers
test2dlg.h(55) : error C2146: syntax error : missing ';' before identifier 'm_sListenSocket'
test2dlg.h(55) : error C2501: 'CMySocket' : missing storage-class or type specifiers
test2dlg.h(55) : error C2501: 'm_sListenSocket' : missing storage-class or type specifiersVC++ tut so als würde er die Klasse CMySocket nicht kennen. Ich habe wirklich keine Ahnung, wo der Fehler liegen kann.
Sollten noch weitere Files benötigt werden, reiche ich die natürlich soschnell
wie möglich nach.Gruss,
Proteus
Anbei CMySocket.cpp und CTest2Dlg.h
Erstmal die File, wo der Error vorkommt
CTest2Dlg.h
// test2Dlg.h : header file // #if !defined(AFX_TEST2DLG_H__1B7B694F_270B_4B90_9E3A_C3C0D6EBAB7A__INCLUDED_) #define AFX_TEST2DLG_H__1B7B694F_270B_4B90_9E3A_C3C0D6EBAB7A__INCLUDED_ #include "MySocket.h" // Added by ClassView #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 ///////////////////////////////////////////////////////////////////////////// // CTest2Dlg dialog class CTest2Dlg : public CDialog { // Construction public: void OnReceive(); void OnClose(); void OnSend(); void OnConnect(); void OnAccept(); int m_iPort; CTest2Dlg(CWnd* pParent = NULL); // standard constructor // Dialog Data //{{AFX_DATA(CTest2Dlg) enum { IDD = IDD_TEST2_DIALOG }; // NOTE: the ClassWizard will add data members here //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CTest2Dlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: HICON m_hIcon; // Generated message map functions //{{AFX_MSG(CTest2Dlg) virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: CMySocket m_sConnectSocket; // ERROR !!! CMySocket m_sListenSocket; // ERROR !!! }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_TEST2DLG_H__1B7B694F_270B_4B90_9E3A_C3C0D6EBAB7A__INCLUDED_)CMySocket
// MySocket.cpp : implementation file // #include "stdafx.h" #include "Test2.h" #include "MySocket.h" #include "Test2Dlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMySocket CMySocket::CMySocket() { } CMySocket::~CMySocket() { } // Do not edit the following lines, which are needed by ClassWizard. #if 0 BEGIN_MESSAGE_MAP(CMySocket, CAsyncSocket) //{{AFX_MSG_MAP(CMySocket) //}}AFX_MSG_MAP END_MESSAGE_MAP() #endif // 0 ///////////////////////////////////////////////////////////////////////////// // CMySocket member functions void CMySocket::SetParent(CDialog *pWnd) { m_pWnd = pWnd; } void CMySocket::OnAccept(int nErrorCode) { ((CTest2Dlg*)m_pWnd)->OnAccept(); } void CMySocket::OnConnect(int nErrorCode) { ((CTest2Dlg*)m_pWnd)->OnConnect(); } void CMySocket::OnClose(int nErrorCode) { ((CTest2Dlg*)m_pWnd)->OnClose(); } void CMySocket::OnReceive(int nErrorCode) { ((CTest2Dlg*)m_pWnd)->OnReceive(); } void CMySocket::OnSend(int nErrorCode) { ((CTest2Dlg*)m_pWnd)->OnSend(); }
-
Wieso zeigst Du uns nicht 'mysocket.h' ?
-
ja klar.. sorry
.. sicher...#if !defined(AFX_MYSOCKET_H__F5AA0330_99D7_4BF5_8700_535CA7AC11F2__INCLUDED_) #define AFX_MYSOCKET_H__F5AA0330_99D7_4BF5_8700_535CA7AC11F2__INCLUDED_ #include "test2Dlg.h" // Added by ClassView #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // MySocket.h : header file // ///////////////////////////////////////////////////////////////////////////// // CMySocket command target class CMySocket : public CAsyncSocket { // Attributes public: // Operations public: CMySocket(); virtual ~CMySocket(); // Overrides public: void SetParent(CDialog* pWnd); // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CMySocket) //}}AFX_VIRTUAL // Generated message map functions //{{AFX_MSG(CMySocket) // NOTE - the ClassWizard will add and remove member functions here. //}}AFX_MSG // Implementation protected: virtual void OnSend(int nErrorCode); virtual void OnReceive(int nErrorCode); virtual void OnClose(int nErrorCode); virtual void OnConnect(int nErrorCode); virtual void OnAccept(int ErrorCode); private: CDialog* m_pWnd; }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_MYSOCKET_H__F5AA0330_99D7_4BF5_8700_535CA7AC11F2__INCLUDED_)
-
wieoft willst du die Dialogklasse includen ?
-
hmmm.. ja.. eigentlich nur einmal *G*..
denkst du das ist das problem ?
-
Ja sicher, deswegen fragte ich ja nach der mysocket.h !!!
Sowas:
// mysocket.h #include "testdlg.h" // testdlg.h #include "mysocket.h"funzt nunmal nicht. Wie auch? Stellt es doch eine 'Endlosschleife' dar!
-
ja danke.. hätte nicht gedacht, dass VC++ son scheiss macht
-
was kann vc++ dafür, wenn du nen fehler machst?
-
wenn du genau hinschaust, dann siehst du nen Kommentar // added by ClassView
also doch nicht mein Fehler ..
-
Schon dein Fehler.
Und zwar lücken im C++-Wissen.Ein Header soll man nur einmal includen.
Deshalb gibt es dieses
#pragma oncebzw. oft verschiedene
#ifdef
#endifWill man eine Klasse einer anderen bekannt machen benutzt man in deinem Fall ein forwarddeklaration
class Mysocket
und der include kommt in die cpp
Eine IDE kann dir nicht alle Arbeit abnehmen sonst könnte ja jeder Softwareentwickler werden.
-
manchmal habe ich wirklich das Gefühl jeder könnte das werden.
Gut, man kann immer etwas dazu lernen .. danke trotzdem