[解決済み] 同じクラスのメンバーでありながら、「非静的なメンバー参照は特定のオブジェクトに対する相対参照でなければならない」というエラーが発生する。
2022-02-10 14:38:48
質問
この質問は何度もされていることだと思いますが、まだ行き詰まっています。このエラーが何であるかは理解しているつもりでしたが、明らかに理解していません。
つまり、私が受けているエラーは
a nonstatic member reference must be relative to a specific object
私のコードは
class theTranslator {
public:
ros::NodeHandle nh;
ros::Publisher pub = nh.advertise<sensor_msgs::Image>("camera/depth/image_raw", 100);
static void getMessage(const sensor_msgs::Image::ConstPtr& recMmsg) {
ROS_INFO( "I heard message" );
pub.publish(recMmsg); //*** ERROR IS HERE ***
}
};
から
pub
と同じクラスに属しています。
getMessage()
ということであれば、うまくいくはずではありませんか?どうすれば
static
メンバ関数は同じクラスの変数メンバを使用しますか?
P.S. これは ROS (Robotics Operating System)ですが、これはC++のミスだと思います(ROSとは関係ない)。
解決方法は?
C++では、静的メソッドから非静的クラスのメンバにアクセスすることはできません。通常のメソッドにして、以下のように試してみてください。
void getMessage(const sensor_msgs::Image::ConstPtr& recMmsg){
ROS_INFO( "I heard message" );
pub.publish(recMmsg); //*** ERROR IS HERE ***
}
そうでなければ、pub を静的メンバとして宣言します。
static ros::Publisher pub;
以下の回答もご参照ください。
関連
-
[解決済み】構造体のベクター初期化について
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】C++の変数はイニシャライザーを持っているが、不完全な型?
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む
-
[解決済み] error : a nonstatic member reference must be relative to a specific object "はどういう意味ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】構造体のベクター初期化について
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】C++エラー:の初期化に一致するコンストラクタがありません。
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー
-
[解決済み] 変数サイズのオブジェクトが初期化されないことがある c++