2012-07-17 143 views
1

所以我正在寫一個Windows窗體應用程序,所以當我運行它時會拋出一個錯誤,它不應該拋出。它會拋出一個「語法錯誤:丟失;使用之前」真的奇怪的Windows窗體C++錯誤

我試着把一個放在前一行,它沒有工作。

有問題的文件是這樣的

// Rock Paper Scisors.cpp : main project file. 

#include "stdafx.h" 
#include "Form1.h" 

using namespace RockPaperScisors; 

[STAThreadAttribute] 
int main(array<System::String ^> ^args) 
{ 
    // 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 Form1()); 
    return 0; 
}} 

的stdafx.h是微軟的Visual C++快遞的一部分,反正對於Form1.h的代碼可以在這個引擎收錄發現(不想淹沒了整個堆棧溢出頁面。)http://pastebin.com/324mpCps

All Help isappreciated!

+0

這聽起來像問題是在'form1.h'。 – 2012-07-17 14:27:59

+0

嗯,我不能進入pasebin並找到缺失的分號,但問題是在'Form1.h'中有一個分號丟失,導致編譯器抱怨在'using'前面需要分號。 。那很簡單。 – Linuxios 2012-07-17 14:28:00

+0

我也看到兩個}}最後 – 2012-07-17 14:28:08

回答

1

你剛剛與括號混淆。

首先,刪除Rock Paper Scisors.cpp文件中的最後一個'}'。 Secodnly,這是正確的Form1.h文件應該是什麼樣子:

#include<time.h> 
#include<stdlib.h> 
#include<stdio.h> 
#include<ctime> 
#include<cstdlib> 

#pragma once 

namespace RockPaperScisors { 

    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 Form1 
    /// </summary> 
    public ref class Form1 : public System::Windows::Forms::Form 
    { 
    public: 
     Form1(void) 
     { 
      InitializeComponent(); 
      // 
      //TODO: Add the constructor code here 
      // 
     } 

    protected: 
     /// <summary> 
     /// Clean up any resources being used. 
     /// </summary> 
     ~Form1() 
     { 
      if (components) 
      { 
       delete components; 
      } 
     } 
    private: System::Windows::Forms::Button^ Rock; 
    protected: 
    private: System::Windows::Forms::Button^ Paper; 
    private: System::Windows::Forms::Button^ cis; 
    private: System::Windows::Forms::TextBox^ ComBox; 

    private: System::Windows::Forms::TextBox^ WonBox; 
    private: System::Windows::Forms::Label^ CompLabel; 


    private: System::Windows::Forms::Label^ WonLabel; 


    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) 
     { 
      this->Rock = (gcnew System::Windows::Forms::Button()); 
      this->Paper = (gcnew System::Windows::Forms::Button()); 
      this->cis = (gcnew System::Windows::Forms::Button()); 
      this->ComBox = (gcnew System::Windows::Forms::TextBox()); 
      this->WonBox = (gcnew System::Windows::Forms::TextBox()); 
      this->CompLabel = (gcnew System::Windows::Forms::Label()); 
      this->WonLabel = (gcnew System::Windows::Forms::Label()); 
      this->SuspendLayout(); 
      // 
      // Rock 
      // 
      this->Rock->Location = System::Drawing::Point(13, 33); 
      this->Rock->Name = L"Rock"; 
      this->Rock->Size = System::Drawing::Size(75, 23); 
      this->Rock->TabIndex = 0; 
      this->Rock->Text = L"Rock"; 
      this->Rock->UseVisualStyleBackColor = true; 
      this->Rock->Click += gcnew System::EventHandler(this, &Form1::Rock_Click); 
      // 
      // Paper 
      // 
      this->Paper->Location = System::Drawing::Point(94, 33); 
      this->Paper->Name = L"Paper"; 
      this->Paper->Size = System::Drawing::Size(75, 23); 
      this->Paper->TabIndex = 0; 
      this->Paper->Text = L"Paper"; 
      this->Paper->UseVisualStyleBackColor = true; 
      this->Paper->Click += gcnew System::EventHandler(this, &Form1::Paper_Click); 
      // 
      // cis 
      // 
      this->cis->Location = System::Drawing::Point(175, 33); 
      this->cis->Name = L"cis"; 
      this->cis->Size = System::Drawing::Size(75, 23); 
      this->cis->TabIndex = 0; 
      this->cis->Text = L"Scisors"; 
      this->cis->UseVisualStyleBackColor = true; 
      this->cis->Click += gcnew System::EventHandler(this, &Form1::cis_Click); 
      // 
      // ComBox 
      // 
      this->ComBox->Location = System::Drawing::Point(83, 127); 
      this->ComBox->Name = L"ComBox"; 
      this->ComBox->Size = System::Drawing::Size(100, 20); 
      this->ComBox->TabIndex = 1; 
      // 
      // WonBox 
      // 
      this->WonBox->Location = System::Drawing::Point(83, 190); 
      this->WonBox->Name = L"WonBox"; 
      this->WonBox->Size = System::Drawing::Size(100, 20); 
      this->WonBox->TabIndex = 2; 
      // 
      // CompLabel 
      // 
      this->CompLabel->AutoSize = true; 
      this->CompLabel->Location = System::Drawing::Point(91, 95); 
      this->CompLabel->Name = L"CompLabel"; 
      this->CompLabel->Size = System::Drawing::Size(88, 13); 
      this->CompLabel->TabIndex = 3; 
      this->CompLabel->Text = L"Computer Choice"; 
      // 
      // WonLabel 
      // 
      this->WonLabel->AutoSize = true; 
      this->WonLabel->Location = System::Drawing::Point(91, 163); 
      this->WonLabel->Name = L"WonLabel"; 
      this->WonLabel->Size = System::Drawing::Size(62, 13); 
      this->WonLabel->TabIndex = 3; 
      this->WonLabel->Text = L"Who Won\?"; 
      // 
      // Form1 
      // 
      this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); 
      this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; 
      this->ClientSize = System::Drawing::Size(284, 262); 
      this->Controls->Add(this->WonLabel); 
      this->Controls->Add(this->CompLabel); 
      this->Controls->Add(this->WonBox); 
      this->Controls->Add(this->ComBox); 
      this->Controls->Add(this->cis); 
      this->Controls->Add(this->Paper); 
      this->Controls->Add(this->Rock); 
      this->Name = L"Form1"; 
      this->Text = L"Form1"; 
      this->ResumeLayout(false); 
      this->PerformLayout(); 

     } 
#pragma endregion 
    int userChoice, compChoice; 
private: System::Void Rock_Click(System::Object^ sender, System::EventArgs^ e) 
     { 
      ComBox->Text=""; 
      userChoice=1; 

     compChoice=rand()%3+1; 

      switch(compChoice) 
      { 
      case 1: 
       ComBox->Text="Rock"; 
       WonBox->Text="You Tied"; 
       break; 
      case 2: 
       ComBox->Text="Paper"; 
       WonBox->Text="You Lost"; 
       break; 
      case 3: 
       ComBox->Text="Scisors"; 
       WonBox->Text="You Won"; 
       break; 
      } 

     } 
private: System::Void Paper_Click(System::Object^ sender, System::EventArgs^ e) { 
      ComBox->Text=""; 
      userChoice=2; 
     compChoice=rand()%3+1; 

      switch(compChoice){ 
      case 1: 
       ComBox->Text="Rock"; 
       WonBox->Text="You Won"; 
       break; 
      case 2: 
       ComBox->Text="Paper"; 
       WonBox->Text="You Tied"; 
       break; 
      case 3: 
       ComBox->Text="Scisors"; 
       WonBox->Text="You Lost!"; 
       break; 
      } 
     } 
private: System::Void cis_Click(System::Object^ sender, System::EventArgs^ e) { 
      ComBox->Text=""; 
      userChoice=3; 
      compChoice=rand()%3+1; 


      switch(compChoice){ 
      case 1: 
       ComBox->Text="Rock"; 
       WonBox->Text="You Lost"; 
       break; 
      case 2: 
       ComBox->Text="Paper"; 
       WonBox->Text="You Won"; 
       break; 
      case 3: 
       ComBox->Text="Scisors"; 
       WonBox->Text="You Tied!"; 
       break; 
      } 
} //The culprit! 
}; 
} 

我只加了一個支架接近尾聲,收盤在課堂上的最後一個方法。由於Visual Studio 2010及更早版本不支持C++/CLI中的智能感知,因此這些項目中可能會出現錯誤。