2013-01-06 54 views
0

我無法從另一個類訪問一個類的成員。我宣佈了兩個班。第一個是Form1,第二個是packet_class。下面是較短版本的課程。我的問題是試圖從packet_send_data類更新serialPort1。 如何訪問serialPort1對象以便我可以通過packet_class :: packet_send_data發送數據?我試圖將引用serialPort1傳遞給packet_class實例化的packet_class對象,但沒有成功。
您的幫助表示讚賞(最好用一個簡單的代碼示例)。
感謝託管C++/CLI從另一個類訪問serialport1

namespace Form_Example { 
using namespace System; 
using namespace System::ComponentModel; 
using namespace System::Collections; 
using namespace System::Windows::Forms; 
using namespace System::Data; 
using namespace System::Drawing; 

public ref class Form1 : public System::Windows::Forms::Form 
{ 
    //Form Initialisation ETC 
public: 
    Form1(void) 
    { 
     this->serialPort1 = (gcnew System::IO::Ports::SerialPort(this->components)); 
    } 
protected: 
public: System::IO::Ports::SerialPort^ serialPort1; 
}; 

}

的packet_class低於

ref class packet_class 
{ 
public: 
    //Constructor Prototype 
packet_class(void); 
void packet_send_data(void); 
String^ data_to_send; // Create an array to store 100 integers 
}; 

//Packet_class Prototype 
packet_class::packet_class(void) 
{ 
data_to_send="SEND ABC"; 
} 

void packet_class::packet_send_data(void) 
{ 
    //I want to access serialPort in the packet_class function here 
    //serialPort1->Write(data_to_send); 
} 

回答

1

如果Form1是實例packet_class的一個,只是把它作爲一個參數構造函數。

ref class packet_class 
{ 
    SerialPort^ serial; 

    packet_class(SerialPort^ serial) 
    { 
     this->serial = serial; 
     data_to_send="SEND ABC"; 
    } 
}; 

// Somewhere in Form1.... 
packet_class packet = gcnew packet_class(this->serialPort1); 
+0

完美!謝謝 –