0

あるクラスのメンバーに別のクラスからアクセスするのに問題があります。私は2つのクラスを宣言しました。1つ目はForm1、2つ目はpacket_classです。クラスの短いバージョンは以下のとおりです。私の問題は、packet_send_dataクラスからserialPort1を更新しようとしています。packet_class :: packet_send_dataを介してデータを送信できるように、serialPort1オブジェクトにアクセスするにはどうすればよいですか?参照serialPort1をpacket_classインスタンス化されたpacket_classオブジェクトに渡そうとしましたが、成功しませんでした。
あなたの助けに感謝します(できれば簡単なコード例で)。
ありがとう

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);
}
4

1 に答える 1

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);
于 2013-01-06T06:10:10.053 に答える