C++: invalid use of non-static data member ...?

2 Antworten

Das liegt daran, dass nodes nicht an die Klasse selbst sondern an die jeweilige Instanz gebunden ist.

Falls es sich bei der betreffenden Zeile um die aus Tree::Node get_node(int id) handelt, dann müsste diese so lauten:

p.set_type(this->nodes[id].get_type());

Und zur C-Frage: Im Grunde so ähnlich, nur halt mit structs und Funktionsnamen wie tree_get_node, wobei immer ein Pointer auf die betreffende struct-"Instanz" übergeben wird.

name123454321 
Fragesteller
 23.08.2022, 21:06

Da kommt der Fehler:

..\ast.cpp:61:13: error: invalid use of 'this' in non-member function
 p.set_type(this->nodes[id].get_type());
0
Skohsl  23.08.2022, 21:08
@name123454321

Kein Wunder, da ist nämlich noch ein weiterer Fehler (der mir selbst erst gerade aufgefallen ist):

In der ast.cpp ist die Methode gar nicht der Klasse zugewiesen.

Also statt

Tree::Node get_node(int id) {

müsste da

Tree::Node Tree::get_node(int id) {

hin.

3
name123454321 
Fragesteller
 23.08.2022, 21:10
@Skohsl

Oh, das habe ich ganz überlesen das war jetzt ein zimlich doofer Fehler von mir

Danke

0
Skohsl  23.08.2022, 21:12
@name123454321

Warte ab bis du versuchst, das ganze in C umzusetzen, DANN machst du doofe Fehler... Jede Menge davon... Ich krieg heute noch das Kotzen wenn ich daran denke, was ich da teilweise für konfusen Scheißkram gebastelt hab... ^^

2

Was ist "Tree::nodes[id]"? Du referenziert damit nodes im Name Space von Tree, aber ohne eine Instanz von Tree zu haben. Das führt dann zu dem Fehler.

Lass das Tree:: davor einfach weg, dann sollte das funktionieren.

Woher ich das weiß:Hobby – Hobby seit meiner Jugend
name123454321 
Fragesteller
 23.08.2022, 21:05

Das habe ich auch schon probiert:

..\ast.cpp:61:13: error: 'nodes' was not declared in this scope
 p.set_type(nodes[id].get_type());
0