2012-04-02 15 views
6

Otrzymuję powyższy komunikat o błędzie (który został przeze mnie znaleziony i znajduje się w związku z brakującym nawiasem klamrowym lub czymś podobnym), ale nie widzę, gdzie jest ten brakujący nawias?krytyczny błąd C1004: nieoczekiwany koniec pliku znaleziony

#include "stdafx.h" 
#include <Windows.h> 
#include <iostream> 
using namespace std; 

    class Something{ 


     static DWORD WINAPI thread_func(LPVOID lpParameter) 
     { 
      thread_data *td = (thread_data*)lpParameter; 
      cout << "thread with id = " << td->m_id << endl; 
      return 0; 
     } 


     int main() 
     { 
      for (int i=0; i< 10; i++) 
      { 
       CreateThread(NULL, 0, thread_func, new thread_data(i) , 0, 0); 
      } 

      int a; 

      cin >> a; 
     } 

     struct thread_data 
     { 
      int m_id; 
      thread_data(int id) : m_id(id) {} 
     }; 

    } 
+0

Po prostu ciekawy, dlaczego "main" jest zawarty w klasie? – Mahesh

+0

Oto przykład: http://stackoverflow.com/questions/4768294/multithreading-in-c – mezamorphic

+0

Myślałem, że to musi być opakowane w klasę? – mezamorphic

Odpowiedz

21

W C++, słowo class wymaga średnika po nawiasie zamykającym:

class Something { 

}; // <-- This semicolon character is missing in your code sample. 
+0

Dzięki za to! Teraz mówi "fatalny błąd LNK1120: 1 nierozwiązany externals" Przykro mi, jestem programistą Java! – mezamorphic

+1

@ user1107474 oznacza, że ​​kompilator może znaleźć deklarację podaną w pliku nagłówkowym (* .h), ale link nie może znaleźć definicji. 'deklaracja - int Count();' <--- masz to gdzieś, ale brakuje definicji '- int Count() {return 5; } ' –

2

Musisz średnik (;) po nawiasem zamykającym (}) definicji class Something

+0

Dzięki, nie sądzę, że znasz problem łącznika, który otrzymuję teraz? – mezamorphic

+1

Czy łączysz się z bibliotekami WINAPI? – Attila

5

Twoja klasa Something musi mieć kończący średnik.

class Something{ 

}; // missing 
Powiązane problemy