まず、C++/Qt
に慣れていないので、試してみました。C#
でもやっています。ポインタの問題。「C++/Qtの-error/staticメンバ変数への未定義の参照」
ストーリー:私はQSerialPort
を使用して、シリアル232ポートで読み書きします。もちろん、インスタンスが1つだけ存在する必要があります。それ以外の場合は、アクセスエラーが発生します。だから私の考えは、オブジェクトを保持する静的メンバー変数を定義することでした。
問題:
serialmanager.h
#include <QSerialPort>
class SerialManager
{
public:
static QSerialPort* getObj();
private:
static QSerialPort* obj;
}
serialmanager.cpp:私はいつも
ソースコードエラー "SerialManager::obj
に未定義の参照" を取得
#include "serialmanager.h"
QSerialPort *obj = new QSerialPort();
QSerialPort* SerialManager::getObj()
{
if(!obj->isOpen())
{
obj->setPortName("/dev/ttyO1"); //error line
obj->setBaudRate(QSerialPort::Baud57600);
//and so on...
}
return obj;
}
以下の回答があります。ところで、インスタンスが1つだけ必要な場合は、1つのインスタンスを作成して静的変数を取り除くことができます – wasthishelpful