Visual C++ fordítási hibaüzenet-mizéria

Visual C++ fordítási hibaüzenet-mizéria
2010-11-18T13:47:33+01:00
2010-11-21T15:34:54+01:00
2022-11-19T22:30:39+01:00
KáGé
Hello!

Éppen az adatbázisok ill. programozás-II kötelező programomon dolgozom Visual Studio 2008-ban, ami egy grafikus felületű telefonkönyv-szerűség lesz, ha majd nagy lesz; ODBC-vel megoldott adatbázissal; viszont egy komoly fejlődési rendellenesség merült föl, aminek az elhárításhoz egyelőre kevésnek bizonyultam.
Elég kis hülye hiba lehet, amit egy tapasztalt programozó egy pillantás alatt kiszúr (legutóbb egy lemaradt "}" okozott majdnem ugyanilyet), de én hiába keresem fél órája, nem találom.

Mikor fordítani próbálom, 182 teljesen hülye hibát dob, nagy részüket gyári headerekre (sql.h és társai), illetve pontosvesszőt hiányol két frissen deklarált string változó azonosítója és típusa között.

EBBEN a zipben van a build log és a rendetlenkedő forrásfájlok.

Köszönöm szépen a segítséget előre is.
Mutasd a teljes hozzászólást!
Ez alapján: >>Link

374. oldal!

Csinálj már egy Form1 osztályt, és helyettesítsd a MainWindow()-t a Form1-re!
Mutasd a teljes hozzászólást!

  • string tipust nem ismeri a TeleObjective namespace-ben.
    Mutasd a teljes hozzászólást!
  • Azért csak pasztázd be a legelső pár hibaüzenetet (szerintem olyasmi lesz, hogy nem talál egy headert)
    Mutasd a teljes hozzászólást!

  • #include <string> using namespace std; namespace TeleObjective {
    Mutasd a teljes hozzászólást!
  • No, hát körülbelül ilyesmire számítottam :D
    Ez a rész így már jó lett, köszi.

    Sajnos az sql.h-ban és további sql-es headerekben még mindig talál egy csomó hibát, most kivettem a DBModule.h-ból annak az includejait (a DBSpec.h-val úgy is belekerülnek), így már csak 116 hibát jelez.
    Frissítettem a zip-et, most már a jelenlegi állapot van benne.

    @NevemTeve
    Ilyesmik:

    c:\program files\microsoft sdks\windows\v6.0a\include\sqltypes.h(137) : error C2146: syntax error : missing ';' before identifier 'SQLHWND'
    C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\sqlext.h(2021) : error C2146: syntax error : missing ')' before identifier 'szFileName'
    C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\sqlext.h(2021) : warning C4229: anachronism used : modifiers on data are ignored
    C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\sqlext.h(2046) : error C2086: 'int DWORD' : redefinition
    C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\sqlext.h(2028) : see declaration of 'DWORD'
    c:\program files\microsoft sdks\windows\v6.0a\include\sqlucode.h(299) : error C2061: syntax error : identifier 'SQLHWND'

    De a teljes build log benne van a zip-ben.
    Mutasd a teljes hozzászólást!
  • windows.h legyen az első #include. Ezek ott vannak.
    Mutasd a teljes hozzászólást!
  • Na már alakul :P

    Ez a legfrissebb log:

    C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5934) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(251) : System::Windows::Forms::IDataObject IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5934) : error C3699: '*' : cannot use this indirection on type 'IDataObject' compiler replacing '*' with '^' to continue parsing C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : error C2371: 'IDataObject' : redefinition; different basic types C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(251) : see declaration of 'IDataObject' C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(6110) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(6123) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(6136) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(6171) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(6184) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(6282) : error C2872: 'IMessageFilter' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(263) : System::Windows::Forms::IMessageFilter IMessageFilter' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IMessageFilter' C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(6282) : error C3699: '*' : cannot use this indirection on type 'IMessageFilter' compiler replacing '*' with '^' to continue parsing C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(6328) : error C2371: 'IMessageFilter' : redefinition; different basic types C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(263) : see declaration of 'IMessageFilter' C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(12671) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(12677) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(12682) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(12688) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(12693) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(12700) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' c:\program files\microsoft sdks\windows\v6.0a\include\oleidl.h(374) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' c:\program files\microsoft sdks\windows\v6.0a\include\oleidl.h(1151) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' c:\program files\microsoft sdks\windows\v6.0a\include\oleidl.h(1157) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' c:\program files\microsoft sdks\windows\v6.0a\include\oleidl.h(3288) : error C2872: 'IDropTarget' : ambiguous symbol could be 'c:\program files\microsoft sdks\windows\v6.0a\include\oleidl.h(173) : System::Windows::Forms::IDropTarget IDropTarget' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDropTarget' c:\program files\microsoft sdks\windows\v6.0a\include\oleidl.h(3288) : error C3699: '*' : cannot use this indirection on type 'IDropTarget' compiler replacing '*' with '^' to continue parsing c:\program files\microsoft sdks\windows\v6.0a\include\oleidl.h(3328) : error C2371: 'IDropTarget' : redefinition; different basic types c:\program files\microsoft sdks\windows\v6.0a\include\oleidl.h(173) : see declaration of 'IDropTarget' c:\program files\microsoft sdks\windows\v6.0a\include\oleidl.h(3332) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' c:\program files\microsoft sdks\windows\v6.0a\include\oleidl.h(3345) : error C2872: 'IDataObject' : ambiguous symbol could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' c:\program files\microsoft sdks\windows\v6.0a\include\servprov.h(96) : error C2872: 'IServiceProvider' : ambiguous symbol could be 'c:\program files\microsoft sdks\windows\v6.0a\include\servprov.h(53) : System::IServiceProvider IServiceProvider' or 'c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : System::IServiceProvider' c:\program files\microsoft sdks\windows\v6.0a\include\servprov.h(96) : error C3699: '*' : cannot use this indirection on type 'IServiceProvider' compiler replacing '*' with '^' to continue parsing c:\program files\microsoft sdks\windows\v6.0a\include\servprov.h(103) : error C2371: 'IServiceProvider' : redefinition; different basic types c:\program files\microsoft sdks\windows\v6.0a\include\servprov.h(53) : see declaration of 'IServiceProvider' c:\program files\microsoft sdks\windows\v6.0a\include\servprov.h(120) : error C2872: 'IServiceProvider' : ambiguous symbol could be 'c:\program files\microsoft sdks\windows\v6.0a\include\servprov.h(103) : IServiceProvider' or 'c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : System::IServiceProvider' c:\program files\microsoft sdks\windows\v6.0a\include\servprov.h(235) : error C2872: 'IServiceProvider' : ambiguous symbol could be 'c:\program files\microsoft sdks\windows\v6.0a\include\servprov.h(103) : IServiceProvider' or 'c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : System::IServiceProvider' c:\program files\microsoft sdks\windows\v6.0a\include\servprov.h(242) : error C2872: 'IServiceProvider' : ambiguous symbol could be 'c:\program files\microsoft sdks\windows\v6.0a\include\servprov.h(103) : IServiceProvider' or 'c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : System::IServiceProvider' C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\urlmon.h(5854) : error C2872: 'IServiceProvider' : ambiguous symbol could be 'c:\program files\microsoft sdks\windows\v6.0a\include\servprov.h(103) : IServiceProvider' or 'c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : System::IServiceProvider' C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\urlmon.h(5856) : error C2872: 'IServiceProvider' : ambiguous symbol could be 'c:\program files\microsoft sdks\windows\v6.0a\include\servprov.h(103) : IServiceProvider' or 'c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : System::IServiceProvider' TeleObjective - 33 error(s), 1 warning(s)
    Mutasd a teljes hozzászólást!
  • szia, csak így elsőre, amibe belefutottam.

    using namespace std; --> ezt header fáljban ne használd, csak .cpp- ben
    Mutasd a teljes hozzászólást!
  • Szia!

    Kipróbáltam, de így is megmaradt néhány hiba a gyári headerekre, illetve így nem deklarálhatok string változókat a headereimben. Vagy lehetne valahogy máshogy?
    ITT van a jelenlegi állás.
    Mutasd a teljes hozzászólást!
  • TeleObjectiveGlobal.h

    Így kellene:
    struct DBSettings { std::string server; //szerver url-je std::string database; //adatbázis neve a szerveren } dbSettings;
    Mutasd a teljes hozzászólást!
  • Egyébként, nem értem, miért csak a teljes program megírása után fordítasz? Miért nem haladsz kis lépésekben?
    Mutasd a teljes hozzászólást!
  • Ugyanez a DBModule.h fájlban:

    // //Konstruktorok, copy-konstruktor, destruktor // public: DBModule(); DBModule(std::string server, std::string database); DBModule(const DBModule& dbModule); ~DBModule(); // //Változók // public: protected: private: std::string server; //szerver url-je std::string database; //adatbázis neve SQLHENV env; SQLHDBC dbc; SQLHSTMT stmt; SQLRETURN ret;
    Mutasd a teljes hozzászólást!
  • A TeleObjectiveGlobal.h fájlban tegyél extern kulcsszót a következő helyekre:

    extern unsigned int err; // = 0x0; //ebben tárolódnak a nem jelentett hibák kódjai /* az adatbázis információi */ extern struct DBSettings { std::string server; //szerver url-je std::string database; //adatbázis neve a szerveren } dbSettings; /* a telefonkönyv beállításai */ extern struct PhonebookSettings { } phonebookSettings;

    A TeleObjectiveGlobal.cpp fájba viszont írd be a loadSettings() függvény elé, hogy:

    DBSettings dbSettings; PhonebookSettings phonebookSettings; unsigned int err = _NO_ERROR;
    Mutasd a teljes hozzászólást!
  • Mivel a loadSettings() függvényben meg akarod változtatni a bemenő paraméter értékét, ezért a paramétert referenciaként kellene átadnod!

    A header fájlban:
    unsigned int loadSettings(DBSettings& _dbSettings); //adatbázisbeállítások betöltése unsigned int loadSettings(PhonebookSettings& _phonebookSettings); //telefonkönyv-beállítások betöltése

    A cpp fájlban:
    /* adatbázisbeállítások betöltése */ unsigned int loadSettings(DBSettings& _dbSettings) { unsigned int ret = _NO_ERROR; ifstream file("config/database.cfg"); if (!file.is_open()) { ret += LOAD_DB_SETTINGS + FILE_NOT_FOUND; } else { char line[URLLENGTH]; file.getline(line, URLLENGTH); _dbSettings.server = line; file.getline(line, URLLENGTH); _dbSettings.database = line; file.close(); } err += ret; return ret; } /* telefonkönyv-beállítások betöltése */ unsigned int loadSettings(PhonebookSettings& _phonebookSettings) { unsigned int ret = _NO_ERROR; ifstream file("config/phonebook.cfg"); if (!file.is_open()) { ret += LOAD_PHONEBOOK_SETTINGS*FILE_NOT_FOUND; } else { char line[URLLENGTH]; file.close(); } err += ret; return ret; }
    Mutasd a teljes hozzászólást!
  • A loadSettings() függvényen belül az err értékét már ne növeld! Hiszen a másik két függvényben ezt már megtetted!

    /* minden beállítás betöltése */ unsigned int loadSettings() { unsigned int ret = loadSettings(dbSettings); //adatbázis beállítások betöltése ret += loadSettings(phonebookSettings); //telefonkönyv beállítások betöltése // err += ret; // Ez már nem kell!! return ret; }
    Mutasd a teljes hozzászólást!
  • Van még hibaüzenet?
    Mutasd a teljes hozzászólást!
  • Köszi!

    Sajnos még így is talál mindenféle hibát a windowsos headerekben, valami nagyon fura dolog lehet itt...

    ÍGY néz ki most.
    Mutasd a teljes hozzászólást!
  • Addig amíg hagyta magát, kis lépésekben haladtam és mindegyik után ki is próbáltam, miből gondolod, hogy nem így csinálom? :)
    Csak most már ez a hiba miatt nem hajlandó lefordulni, úgyhogy azóta vaktában repülök...
    Mutasd a teljes hozzászólást!
  • Egyébként így tök ugyanazt dobja, mint mikor a headerekbe is beleírtam a using namespace std;-t, úgyhogy akkor lehet, hogy nem azzal volt a baj.
    Mutasd a teljes hozzászólást!
  • Szerintem, itt már csak a .NET résszel van valami baj.

    Próbáld ki így:

    #include "stdafx.h" //#include "MainWindow.h" #include "TeleObjectiveGlobal.h" #include "DBModule.h" namespace TeleObjective { DBModule* dbModule; //adatbáziskezelő modul } using namespace TeleObjective; [STAThreadAttribute] int main(array<System::String ^> ^args) { //beállítások betöltése loadSettings(); //adatbázis csatlakoztatása dbModule = new DBModule(dbSettings.server, dbSettings.database); // Enabling Windows XP visual effects before any controls are created //Application::EnableVisualStyles(); //Application::SetCompatibleTextRenderingDefault(false); // Create the main window and run it //Application::Run(gcnew MainWindow()); delete dbModule; return 0; }
    Mutasd a teljes hozzászólást!
  • Ez alapján: >>Link

    374. oldal!

    Csinálj már egy Form1 osztályt, és helyettesítsd a MainWindow()-t a Form1-re!
    Mutasd a teljes hozzászólást!
  • Milyen projektet indítottál, amikor a programot elkezdted írni?
    Mutasd a teljes hozzászólást!
  • Na, csináltam egy új projektet, amiben az eredeti módon meghagytam a Form1-et, így működik...
    Ezek szerint az a baja, hogy átneveztem MainWindowra? OMG. (Egyébként amíg nem kezdtem az sql-es headereket használni, semmi baja nem volt vele...)

    @00:40
    "Normális" Windows forms applicationt kezdtem (ahogy a linkelt könyvben is van), csak olyan gagyi név a "Form1", úgyhogy rákerestem a projekt mappa összes fájljában (beleértve természetesen a .sln-t, .suo-t, .vcproj-t, .user-t meg az összes .resx-et) a "Form1" kifejezésre és "MainWindow"-ra cseréltem.

    Mit csináljak most vele, írjam vissza mindenhol "Form1"-re? Vagy meg lehet valahogy oldani, hogy MainWindow névvel is működjön?

    Köszönöm szépen.
    Mutasd a teljes hozzászólást!
  • Szerintem, a Form1-et át lehet nevezni bárminek. Igazából pontosan nem tudom, hogyan, mert én Linux felhasználó vagyok. Nálam pl. a NetBeans alatt, ha jobb egér gombbal rákattintok az osztály nevére, és a "Rafactor" "Rename..." parancsot választom, akkor átnevezi az összes létező helyen az osztályt.
    Visual C++ esetén is valami hasonlót keress!

    Most jut eszembe! Ha egy új projektet indítasz, akkor biztos meg lehet mondani valahol a varázslóban, hogy mi legyen a Form-od neve. Nem létezik, hogy ne lehessen megadni!
    Mutasd a teljes hozzászólást!
  • Ebben a fantasztikus eszközben nincs refactor...

    Projekt létrehozásakor meg nálam csak a projekt nevét és helyét lehet megadni, lehet, hogy valamit át lehetne állítani, hogy lehessen mást is, de nem hiszem...

    Na megpróbálom valahogy meghekkelni, remélem sikerül...

    Köszönöm a segítséget
    Mutasd a teljes hozzászólást!
  • Basszus, sajnos mégse jó... :/

    Valószínűleg akkor a főablak tartalmával, és nem a nevével van baj. Egész konkrétan, ha kikommentelem az összes, MainWindow.h-ba include-olt headert és a belőlük hozott objektumokat, akkor lefordul, de ha bármelyik is benne van, akkor nem...

    Most már az egész projektet beleraktam a ZIPBE, mert már nem tudom megállapítani, hogy hol a hiba...
    Mutasd a teljes hozzászólást!
  • Meghekkeltem így:

    MainWindow.h:
    #pragma once namespace TeleObjective { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; /// <summary> /// ... /// </summary> public ref class MainWindow : public System::Windows::Forms::Form { public: MainWindow(void) { InitializeComponent(); // //TODO: Add the constructor code here // InitializeOwnComponent(); } protected: /// <summary> /// Clean up any resources being used. /// </summary> ~MainWindow() { if (components) { delete components; } } private: System::Windows::Forms::Button^ PhonebookButton; private: System::Windows::Forms::Button^ MessagesButton; private: System::Windows::Forms::Button^ HistoryButton; private: System::Windows::Forms::Button^ ControlPanelButton; protected: protected: private: /// <summary> /// Required designer variable. /// </summary> System::ComponentModel::Container ^components; /* Saját cucc */ private: Object^ phonebookWindow; Object^ messageWindow; Object^ historyWindow; Object^ controlPanelWindow; void InitializeOwnComponent(); #pragma region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> void InitializeComponent(void) { ///... } #pragma endregion private: System::Void MainWindow_Load(System::Object^ sender, System::EventArgs^ e); private: System::Void PhonebookButton_Click(System::Object^ sender, System::EventArgs^ e); private: System::Void MessagesButton_Click(System::Object^ sender, System::EventArgs^ e); private: System::Void HistoryButton_Click(System::Object^ sender, System::EventArgs^ e); private: System::Void ControlPanelButton_Click(System::Object^ sender, System::EventArgs^ e); }; }

    MainWindow.cpp:
    #include "StdAfx.h" #include "MainWindow.h" #include "PhonebookWindow.h" #include "HistoryWindow.h" #include "MessageWindow.h" #include "ControlPanelWindow.h" namespace TeleObjective{ System::Void MainWindow::InitializeOwnComponent() { MainWindow::phonebookWindow = gcnew PhonebookWindow(); MainWindow::messageWindow = gcnew MessageWindow(); MainWindow::historyWindow = gcnew HistoryWindow(); MainWindow::controlPanelWindow = gcnew ControlPanelWindow(); } System::Void MainWindow::MainWindow_Load(System::Object^ sender, System::EventArgs^ e) { /* ablakbetöltés */ } System::Void MainWindow::PhonebookButton_Click(System::Object^ sender, System::EventArgs^ e) { /* telefonkönyv-gomb kattintás */ ((PhonebookWindow^)MainWindow::phonebookWindow)->Show(); ((PhonebookWindow^)MainWindow::phonebookWindow)->Focus(); } System::Void MainWindow::MessagesButton_Click(System::Object^ sender, System::EventArgs^ e) { /* üzenetek-gomb kattintás */ ((MessageWindow^)MainWindow::messageWindow)->Show(); ((MessageWindow^)MainWindow::messageWindow)->Focus(); } System::Void MainWindow::HistoryButton_Click(System::Object^ sender, System::EventArgs^ e) { /* hívásnapló-gomb kattintás */ ((HistoryWindow^)MainWindow::historyWindow)->Show(); ((HistoryWindow^)MainWindow::historyWindow)->Focus(); } System::Void MainWindow::ControlPanelButton_Click(System::Object^ sender, System::EventArgs^ e) { /* vezérlőpult-gomb kattintás */ ((ControlPanelWindow^)MainWindow::controlPanelWindow)->Show(); ((ControlPanelWindow^)MainWindow::controlPanelWindow)->Focus(); } } /* end of namespace TeleObjective{ */

    Valószínűleg az volt a baj, hogy headerbe includeoltam.
    Viszont lehetne ezt esetleg szebben? Hogy ne kelljen castolgatni mindig? (Ráadásul nem biztonságos irányba)

    Köszi
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd