1

Visual C++ Express 2010 のヘッダー ファイルを次に示します (最後の行に注意してください)。

/* custom class header to communicate with LynxMotion robot arm */

using namespace System;
using namespace System::IO::Ports;

public ref class LynxRobotArm
{
public:
    LynxRobotArm();
    ~LynxRobotArm();
    void connectToSerialPort(String^ portName, int baudRate);
    void disconnectFromSerialPort();
    void setCurrentPosition(int channel, int position);
    int getCurrentPosition(int channel);
    void moveToPosition(int channel, int position);

private:
    void initConnection();
    SerialPort^ serialPort;
    array<String^> ^serialPortNames;
    String^ portName;
    int baudRate;
    std::vector<int> *currentPosition;
};

この関数を使用してベクトルに値を代入しようとしました。

void LynxRobotArm::setCurrentPosition(int channel, int position)
{
    currentPosition[channel] = position;
}

コンパイラからエラー C2679 が返されます。 binary '=' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)

MSDNを調べたところ、次のように書かれています。

演算子を使用するには、指定された型に対して演算子をオーバーロードするか、演算子が定義されている型への変換を定義する必要があります。

使ってみcurrentPosition.at(channel) = positionましたが変わりませんでした。

私は立ち往生しています...ポインターにまったく慣れていないためstd::vector<int> currentPosition;、代わりに使用するとstd::vector<int> *currentPosition;コンパイルされないことに注意してください。

セット関数はどのように機能する必要がありますか? (後でゲッターを試します..)

4

0 に答える 0