1. ホーム
  2. c++

[解決済み] のベースオペランドが非ポインタ型である。

2022-02-11 16:24:45

質問

まず、コードです。

// ...

struct node_list {
    node_list *prev;
    node *target;     // node is defined elsewhere in the application
    node_list *next;
    };

node_list nl_head;

int main() {
    nl_head->prev = &nl_head;
    // ...
    return 0;
    }

エラーが発生する

make (in directory: #####)
g++ -Wall -std=c++11 -o main main.cc
main.cc: In function ‘int main(int, char**)’:
main.cc:38:9: error: base operand of ‘->’ has non-pointer type ‘node_list’
  nl_head->prev = &nl_head;
         ^
Makefile:8: recipe for target 'main' failed
make: *** [main] Error 1
Compilation failed.

私が見る限りでは、私の構文は正しいです。どなたか間違いを指摘してください。

重複のフラグを立てられる前に、他のいくつかの質問と類似していることは承知していますが、それらの解決策はどれも私には機能しないようです。私が間違っているのでなければ、その可能性は認めますが、それが私がここにいる理由です。

解決方法は?

nl_head はポインタではありません。 nl_head.prev