Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 07:30

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[C++] "->"-Operator

Discussion on [C++] "->"-Operator within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
CracKPod's Avatar
 
elite*gold: 0
Join Date: May 2006
Posts: 41
Received Thanks: 11
[C++] "->"-Operator

Hey,
Ich probiere grade nen kleinen PixelBot zu schreiben.

Folgendes habe ich jetzt aus Testgründen geschrieben:

Code:
#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
    LPPOINT CursorPos;
    while(true)
    {
        Sleep(100);
        GetCursorPos(CursorPos);
        cout << CursorPos.x << endl;
        cout << CursorPos.y << endl;
    }
}
ne LPPOINT struct deklariert und dann diese mit GetCursorPos in der Schleife gefüllt. Jetzt bekomme ich aber nen error wenn ich mit dem Zugriffsoperator auf die Variablen der struct zugreifen will.

"`x' has not been declared"
"request for member of non-aggregate type before '<<' token "
"`y' has not been declared"
"request for member of non-aggregate type before '<<' token "

Da ich ziemlich neu in C++ bin weiß ich nicht was das bedeutet. Daraufhin habe ich mir den Source eines anderen PixelBots angeschaut und dieser realisiert das so:

Code:
int GetCursorX() {
    LPPOINT p = new POINT;

    GetCursorPos(p);

    return p->x;
}

int GetCursorY() {
    LPPOINT p = new POINT;

    GetCursorPos(p);

    return p->y;
}
Da sehe ich jetzt den "->" operator. Leider habe ich noch keine Ahnung was der bedeutet bzw. was der macht. Scheint für mich jetzt nen anderer Zugriffsoperator zu sein um auf variablen einer struct/Klasse zuzugreifen.

Seine Methode funktioniert komischerweise.

Also:

Code:
#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
    LPPOINT CursorPos;
    while(true)
    {
        Sleep(100);
        GetCursorPos(CursorPos);
        cout << CursorPos->x << endl;
        cout << CursorPos->y << endl;
    }
}
Startet zwar stellt aber nach der ersten Sekunde ein Problem fest.
Kann mir jemand helfen und mich ein bisschen aufklären?
Klassen und Objekte lerne ich bald in meinem Tutorial.

Danke,
MfG,
CracKPod
CracKPod is offline  
Old 04/10/2008, 19:53   #2
 
Forgi's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 5
Received Thanks: 0
Ich glaube des schlägt eine Fehlermeldung, weil dein Programm ein Konsolen-Projekt ist... Probiers mal mit wxWidges, da klappt es zu 100% mit "->"-Operatoren.

Wieso machen sich die meisten Programmierer so viele Umwege, wenns leichter geht

Naja... zu deinem 2. Zitat: Er hat den Quelltext nich in "Main" geschrieben, sondern direkt nach dem "using namespace std;". Daraufhin muss er in "Main" dies wieder eingebunden haben, da dies sonst nicht laufen würde (Objekt-Orientierte-Programmierung [OOP] - eine schon etwas höhere Programmierung)

Und wenn du sozusagen noch Newbie in C++ bist kannst du auch nicht von Anfang an schon richtige "Bots" basteln. Die laufen meistens auch erst mit einem Script, der dem Programm die Anweisungen gibt; ähnlich wie bei einem Drucker.

Hier mal ein Beispiel zum Ausprobieren (wxWidges):
Code:
//base.h
#ifndef BASIC_H
#define BASIC_H

class MainApp : public wxApp {

    public: virtual bool OnInit();
};

class MainFrame : public wxFrame {

    public:
             MainFrame(const wxChar *title, int xpos, int ypos, int width, int height);
             ~MainFrame();
};
#endif
Code:
//base.cpp
#include <wx/wx.h>
#include "base.h"

IMPLEMENT_APP(MainApp)

bool MainApp::OnInit() {
     
     MainFrame *frame = new MainFrame(wxT("Titel"),50,50,450,300);
     frame[B]->[/B]Show(TRUE);
     SetTopWindow(frame);
     return TRUE;
}

MainFrame::MainFrame(const wxChar *title,
                     int xpos, int ypos,
                     int width, int height)
                     : wxFrame((wxFrame *)NULL, -1, title, wxPoint(xpos,ypos),wxSize(width, height)) { }
                     
MainFrame::~MainFrame() { }
Das "->" sagt in diesem Fall dem Frame, dass er angezeigt werden soll.
Forgi is offline  
Old 04/10/2008, 20:38   #3
 
CracKPod's Avatar
 
elite*gold: 0
Join Date: May 2006
Posts: 41
Received Thanks: 11
Ehrmm ich bin mir zu 100% sicher das es nicht an den wxWidgets liegt.
Außerdem möchte ich nur die koordinaten meiner Maus rausfinden und da ist es kackegal ob man ne gui hat oder nicht.

"Wieso machen sich die meisten Programmierer so viele Umwege, wenns leichter geht "
Machst du mit deinem wxWidgets-Gekrame nicht mehr Umwege?

"Naja... zu deinem 2. Zitat: Er hat den Quelltext nich in "Main" geschrieben, sondern direkt nach dem "using namespace std;". Daraufhin muss er in "Main" dies wieder eingebunden haben, da dies sonst nicht laufen würde (Objekt-Orientierte-Programmierung [OOP] - eine schon etwas höhere Programmierung)"

Ergab im Zusammenhang mit meiner Frage keinen Sinn.
Und ich weiß was OOP ist. Tut mir leid aber deine Antwort hat mir nicht wirklich weitergeholfen.

MfG,

CracKPod

EDIT:
Scheint mir jetzt ehrlich gesagt nicht so als hättest du Ahnung davon was du da redest srry. Kann aber natürlich auch nur ich sein.

Habe es rausgefunden hängt mit dynamischer Speicherreservierung zusammen und dem Schlüsselwort new. MfG, CracKPod

EDIT2:

So gehts:

Code:
#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
    LPPOINT CursorPosition = new POINT;
    while(true)
    {
        long xold, yold;
        Sleep(1);
        GetCursorPos(CursorPosition);
        if ((CursorPosition->x==xold)&&(CursorPosition->y==yold))
        {
            continue;
        }
        cout << "Cursor @ X: " << CursorPosition->x << endl;
        cout << "Cursor @ Y: " << CursorPosition->y << endl;
        xold = CursorPosition->x;
        yold = CursorPosition->y;
    }
}
Ich habe jetzt leider keine Ahnung wofür der -> gut ist und wofür das Schlüsselwort new steht.
Ich denke new hat was mit der dynamischen Speicherverwaltung zu tun und -> muss man damit im zusammehang benutzen ist wohl nen pointer operator o.ä.

Wäre schon wenn mich jemand aufklärt mfg,
CracKPod
CracKPod is offline  
Old 04/11/2008, 13:00   #4
 
CracKPod's Avatar
 
elite*gold: 0
Join Date: May 2006
Posts: 41
Received Thanks: 11
Verdammt, Danke!

Hat mir sehr geholfen. Wusste nicht das wenn man eine struct dynamisch anlegt auch alle variablen in dieser struct nur Zeiger sind.

MfG,
CracKPod
CracKPod is offline  
Reply


Similar Threads Similar Threads
[AUFRUF] An alle, die von "[Aimee]", "Blck-Sellerx" & ".Ava" betrogen worden sind!
03/23/2010 - Last Chaos - 34 Replies
Hallo libe ehrlichen Member von e*PvPers! Im LastChaos und Metin Bereich im TBM Forum soll ".Ava" mehrere Leute abgezogen haben. Nun kommen aber plötzlich Gegenstimmen in der iTrader Bewertung die positiv ausfallen von "Black-SellerX" und "" bei genauerem Hinsehen bemerkt man, dass diese 3 Forenuser sich gegenseitig immer wieder positiv bewerten, dennnoch werden diese von vielen Usern negativ bewertet. Von "" wurde ich selber betrogen, daher mein Interesse. Deshalb vermute ich, dass hinter...



All times are GMT +1. The time now is 07:33.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.