0
這裏的問題是:Visual C++/CLI兩個類對象之間的相互訪問?
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;'
然後錯誤是:
error C2146: syntax error : missing ';' before identifier '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'
} }
但我也可以「命名空間PROGRAM1」之前移動「RunnableThread」聲明代碼,因爲「RunnableThread」使用指針父親Form1的「,誰創造的一個實例這個班。
如何解決這個問題?
感謝您的任何答案。
這個愚蠢的令人頭疼的問題是很多C++/CLI程序員轉向C#的原因之一。建議,C++/CLI中的winforms編程沒有優勢,也沒有未來。 – 2010-10-15 12:12:32