- xPain
- 23. März 2021
- Geschlossen
- Erledigt
In diesem Bereich sind Themen vom Themenersteller als erledigt zu markieren, wenn die Frage beantwortet oder das Problem gelöst wurde. Das Thema wird daraufhin automatisch geschlossen.
Klicke hierzu auf "Thema bearbeiten > Als erledigt markieren".
- #1
Hallo,
ich würde gerne für das Leader/Co-Leader System abfragen, ob der Spieler ein GM ist oder nicht. Wenn GM = kein Leader/Co-Leader dranhängen.Ich habs so:
- if (!CInstanceBase::IsGameMaster())
- if (dwNewIsGuildName == 3)
- strGuildName.insert(0, "[Leader] - ");
- else if (dwNewIsGuildName == 2)
- strGuildName.insert(0, "[CoLeader] - ");
Er sagt aber "Ein nicht statischer Memberverweis muss relativ zu einem bestimmten Objekt sein.", also beim
- if (!CInstanceBase::IsGameMaster())
Woran liegt das bzw. wie bekomme ich das richtig hin?
Moderator 24. März 2021
Hat das Thema geschlossen
Dieses Thema enthält 3 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.
- Foren
- Virtual World
- Programmierung
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
[C++] Unzulässiger Aufruf einer nicht statischen Memberfunktion (gelöst)
- Ersteller TooR
- Erstellt am 21 April 2008
Hallo, bin mal wieder an einer kleinen Übungsaufgabe zu C++. Es geht dabei um die Berechnung von komplexen Zahlen. Dies ist für mein Problem nebensächlich. Ich bin gerade am Anfang und will testen ob mein Standartkonstruktor funktioniert. Dazu will ich ihn erzeugen und danach mit print() ausgeben lassen. Dabei liefert mit Visual Studio 08 folgenden Fehler:
Unzulässiger Aufruf einer nicht statischen Memberfunktion (Main.cpp Zeile: 1 Main.cpp #include <iostream>
#include "Complex.h"
using namespace std;
/*@aurhor: Dominic
* Test der Implementierung: complex
*/
int main(int argc, char* argv[]){
cout << "c1";
//Ruft Standartkonstruktor auf
Complex::Complex();
//Ruft die Printmethode auf,
//hier entsetht der Fehler (in VS 08 C2352)
Complex::print();
return 0;
} #include <iostream>
#include "Complex.h"
#include <math.h>
using namespace std;
Complex::Complex(int realP, int imagP){
this->realPart = realP;
this->imagPart = imagP;
}
void Complex::setImag(int imagP){
this->imagPart = imagP;
}
void Complex::setReal(int realP){
this->realPart = realP;
}
int Complex::getImag(){
return this->imagPart;
}
int Complex::getReal(){
return this->realPart;
}
double Complex::absolutValue(){
return (sqrt((double)(getReal() * getReal())
+(double)(getImag() * getImag())));
}
}
void Complex::print(){
cout << getReal() << " + i " << getImag();
} #ifndef __Complex__
#define __Complex__
class Complex {
public:
Complex add(Complex op);
double absolutValue();
int getReal();
int getImag();
void setReal(int realP);
void setImag(int imagP);
//Standartkonstruktor
Complex(){
realPart = 0;
imagPart = 0;
}
Complex(int realP, int imagP);
void print();
private:
int realPart;
int imagPart;
};
#endif
Complex.h
complex.h
Ich hoffe mir kann jemand den Fehler erklären den ich hier mache.
MFG
Zuletzt bearbeitet: 21 April 2008
- #2
Sowie ich das sehe (CPP schon einige Jahre eingerostet), rufst du in Zeile 18 die Methode aus einem statischen Kontext aus. Du müstest sowas machen wie Complex c; Nagel mich jetzt nicht auf die genaue Syntax fest, aber ich meine so müsste es gehen...
c = new Complex();
c->print();
Zuletzt bearbeitet: 21 April 2008
theHacker
sieht vor lauter Ads den Content nicht mehr20 April 200622.6521.287
- #3
Der Konstruktor wird automatisch ausgeführt. Einfach nur Complex c; // deklarieren, initialisieren, triggert Konstruktor
c.print();
Complex* c; // nur deklarieren, kein Speicher reserviert ! // c->print(); // führt zum SIGSEGV c = new Complex(); // Speicher holen, Konstruktor aufrufen c->print(); delete c; // freigeben
Zuletzt bearbeitet: 21 April 2008
- #4
Manchmal ist es doch zu simpel um es zu glauben. //Ruft Standartkonstruktor auf
Complex c;
//Ruft die Printmethode auf
c.print();
Hier mal der Ausschnitt, der Main.cpp, welche zur Lösung geführt hat:
Vielen dank für die Hilfe
Zuletzt bearbeitet: 21 April 2008
- Foren
- Virtual World
- Programmierung