Вот проблема:
namespace Program1 {
public ref class Form1 : public System::Windows::Forms::Form
{
public: Form1(void) {....}
private: RunnableThread^ peerThread;
private: System::Void loginButton_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
String^ ip = this->ipTextField->Text;
String^ port = this->portTextField->Text;
<.............>
// Start new thread
this->peerThread = gcnew RunnableThread("thread2", ip, port, this->gameMatrix, this);
<..............>
}
}
}
// Runnable class
ref class RunnableThread
{
private:
String^ ip;
String^ port;
<...>
EchoClient3WS::Form1^ refToRootObj;
<......>
public:
RunnableThread(String^ threadName, String^ ip, String^ port, GameMatrix^ gameMatrix, Program1::Form1^ rootObj);
void run();
void callServer(String^ message);
void done();
};
И я получил ошибку:
Строка:
'private: RunnableThread^ peerThread;'
Тогда ошибка:
ошибка C2146: синтаксическая ошибка: отсутствует
';' перед идентификатором
'peerThread' k: \ visual studio
2010 \ Projects \ program1 \ program1 \ Form1.h
<....>
Кажется, что
namespace Program1 { public ref class Form: <...> {
// HERE WE DON'T KNOW ANYTHING ABOUT THE CLASS NAMED 'RunnableThread'
} }
Но я также могу переместить код объявления «RunnableThread» перед «пространством имен Program1», потому что «RunnableThread» использует указатель на отца «Form1», который создал экземпляр этого класса.
Как решить эту проблему?
Спасибо за любой ответ.