2017-11-10 3 views
0

Visual Studio gibt mir den nächsten Fehler: "Error: Erwarte eine Kennung" in meiner .cpp-Datei, wo ich die Funktion definiere, die durch den Header in der .h-Datei definiert wird.Was mache ich falsch an diesem Klassenkonstruktor?

UI_Main.h:

#pragma once 

namespace ProcessMonitoring { 

    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 for UI_Main 
    /// </summary> 
    public ref class UI_Main : public System::Windows::Forms::Form 
    { 
    public: UI_Main(void); 

    protected: 
     /// <summary> 
     /// Clean up any resources being used. 
     /// </summary> 
     ~UI_Main() 
     { 
      if (components) 
      { 
       delete components; 
      } 
     } 

    private: 
     /// <summary> 
     /// Required designer variable. 
     /// </summary> 
     System::ComponentModel::Container ^components; 

#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) 
     { 
      System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(UI_Main::typeid)); 
      this->SuspendLayout(); 
      // 
      // UI_Main 
      // 
      this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); 
      this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; 
      this->ClientSize = System::Drawing::Size(284, 261); 
      this->Icon = (cli::safe_cast<System::Drawing::Icon^ >(resources->GetObject(L"$this.Icon"))); 
      this->IsMdiContainer = true; 
      this->Name = L"UI_Main"; 
      this->Text = L"PMonitoring"; 
      this->ResumeLayout(false); 

     } 
#pragma endregion 
    }; 
} 

UI_Main.cpp (mit Fehlern auf UI_Main Konstruktor):

#include "UI_Main.h" 

namespace ProcessMonitoring{ 

    ProcessMonitoring::UI_Main(void){ 
     InitializeComponent(); 
     // 
     //TODO: Add the constructor code here 
     // 
    } 

}; 

Es ist ein sehr einfach sein muss scheitern, aber ich bin nicht in der Lage, es zu finden ... Vielen Dank im Voraus!

Die Fehler nach zu debuggen versuchen, sind:

* error C2062: type 'void' unexpected 
* error C2143: syntax_error: missing ';' before '{' 
* error C2447: '{': missing function header (old-style formal list?) 
* IntelliSense: expected a ';' 
* IntelliSense: expected an identifier 
+0

Bitte geben Sie die vollständige Fehlermeldung statt einer Erläuterung der Fehlermeldung. – Nepho

+0

Dies scheint immer noch nicht wie die vollständige Kompilierung Fehler ... Sie sollten Angaben haben * wo * der "Typ" void' ist "unerwartet" – Nepho

+0

Löschen "void" löst das Problem nicht – areify

Antwort

1

Diese

namespace ProcessMonitoring{ 

    ProcessMonitoring::UI_Main(void){ 

namespace ProcessMonitoring 
{ 
    UI_Main::UI_Main(void) 
    { 

Du hast bereits den Namespace-Namen gegeben sein sollte, so dass Sie nicht tun muss sich wieder damit qualifizieren. Sie müssen jedoch einen vollständig qualifizierten Namen für eine Konstruktordefinition verwenden, die außerhalb der Klasse liegt. Dies bedeutet, dass Sie den Klassennamen zweimal schreiben müssen.

Die Syntax Sie haben:

ProcessMonitoring::UI_Main(identifier); 

eine Variablendeklaration, wo der Typ ::ProcessMonitoring::UI_Main und der Variablenname ist identifier, und die Klammern sind redundant. Aber void ist ein Schlüsselwort, kein gesetzlicher Variablenname, also lehnt der Compiler es mit dem Fehler ab, den Sie gesehen haben.

+0

Dies war die reale Lösung! Vielen Dank! – areify