Variable von einer Klasse in einer anderen Klasse auslesen

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
andi7
Beiträge: 11
Registriert: 18. August 2009 15:03

Variable von einer Klasse in einer anderen Klasse auslesen

Beitrag von andi7 »

// main.cpp

#include <QtGui/QApplication>
#include "my_class.h"
#include <QApplication>
#include <QPushButton>
#include <QVBoxLayout>
#include <QLabel>
#include <QFont>
#include <QWidget>
#include <QObject>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget* win = new QWidget;

my_class nu00("TS1", 0, 0);
my_class nu01("BS1", 1, 0);

QGridLayout* layout = new QGridLayout(win);
QPushButton* n00= new QPushButton("TS1");
QPushButton* n01= new QPushButton("BS1");


layout->addWidget( n00 , 0, 0);
layout->addWidget( n01 , 1, 0);

QObject::connect(n00, SIGNAL(clicked()),
&nu00,SLOT( geklickt() ));
QObject::connect(n01, SIGNAL(clicked()),
&nu01, SLOT(geklickt()));

win->show();
return a.exec();
}


--------------------------------------------------------

//my_class.h

#ifndef MY_CLASS_H
#define MY_CLASS_H
#include <QObject>
#include <iostream>



class my_class : public QObject {
Q_OBJECT
public:
my_class(std::string, int, int); // Konstruktor
~my_class();
void place( int, int);
int On;

int auslesenx();
int ausleseny();
std::string butname;
public slots:
void geklickt();
signals:
//void ausfuehren(int x, int y);

private:
int Placex;
int Placey;

};

#endif


-------------------------------------------------------

//my_class.cpp

#include "my_class.h"

my_class::my_class(std::string a, int b, int c)
{
butname=a;
Placex=b;
Placey=c;
On==1;
int *zOn=&On;
}
my_class::~my_class()
{
}

int my_class::auslesenx()
{
return Placex;
}

int my_class::ausleseny()
{
return Placey;
}

void my_class::place(int x, int y)
{
Placex=x;
Placey=y;
}

void my_class::geklickt()
{
// Wie kann ich hier auf nu01.On zugreifen wenn ich in der Klasse nu00 bin?

}
arj
Beiträge: 45
Registriert: 1. Juni 2009 13:51
Wohnort: Ihringen

Beitrag von arj »

Hallo,

es wäre schön, wenn Du deinen Code in entsprechende Code Tags stellen würdest und den Code dann etwas einrücken würdest. Dann kann man Dir auch einfacher helfen.

Einfache Antwort auf deine Frage: Du musst entweder per Constructor oder per Methode das nu01 Objekt an nu00 übergeben.

Längere Antwort:
Ich bezweifel, dass Du genau das benötigst. Ich habe mir den Code von Dir nicht komplett angesehen aber vermutlich sieht das eher nach einem Designfehler aus. Was möchtest Du denn eigentlich machen?
andi7
Beiträge: 11
Registriert: 18. August 2009 15:03

Beitrag von andi7 »

Einfache Antwort auf deine Frage: Du musst entweder per Constructor oder per Methode das nu01 Objekt an nu00 übergeben.
Wie kann man dies machen?

Code: Alles auswählen

// main.cpp 

#include <QtGui/QApplication> 
#include "my_class.h" 
#include <QApplication> 
#include <QPushButton> 
#include <QVBoxLayout> 
#include <QLabel> 
#include <QFont> 
#include <QWidget> 
#include <QObject> 

int main(int argc, char *argv[]) 
{ 
QApplication a(argc, argv); 
QWidget* win = new QWidget; 

my_class nu00("TS1", 0, 0); 
my_class nu01("BS1", 1, 0); 

QGridLayout* layout = new QGridLayout(win); 
QPushButton* n00= new QPushButton("TS1"); 
QPushButton* n01= new QPushButton("BS1"); 


layout->addWidget( n00 , 0, 0); 
layout->addWidget( n01 , 1, 0); 

QObject::connect(n00, SIGNAL(clicked()), 
&nu00,SLOT( geklickt() )); 
QObject::connect(n01, SIGNAL(clicked()), 
&nu01, SLOT(geklickt())); 

win->show(); 
return a.exec(); 
}

Code: Alles auswählen

//my_class.h 

#ifndef MY_CLASS_H 
#define MY_CLASS_H 
#include <QObject> 
#include <iostream> 



class my_class : public QObject { 
Q_OBJECT 
public: 
my_class(std::string, int, int); // Konstruktor 
~my_class(); 
void place( int, int); 
int On; 

int auslesenx(); 
int ausleseny(); 
std::string butname; 
public slots: 
void geklickt(); 
signals: 
//void ausfuehren(int x, int y); 

private: 
int Placex; 
int Placey; 

}; 

#endif

Code: Alles auswählen

//my_class.cpp 

#include "my_class.h" 

my_class::my_class(std::string a, int b, int c) 
{ 
butname=a; 
Placex=b; 
Placey=c; 
On==1; 
int *zOn=&On; 
} 
my_class::~my_class() 
{ 
} 

int my_class::auslesenx() 
{ 
return Placex; 
} 

int my_class::ausleseny() 
{ 
return Placey; 
} 

void my_class::place(int x, int y) 
{ 
Placex=x; 
Placey=y; 
} 

void my_class::geklickt() 
{ 
// Wie kann ich hier auf nu01.On zugreifen wenn ich in der Klasse nu00 bin? 

}
Hulk2442
Beiträge: 115
Registriert: 10. Januar 2007 13:44

Beitrag von Hulk2442 »

Morgen
Die Übergabe eines Objektes, funktioniert genau so wie die Übergabe von Parametern!

Code: Alles auswählen

//in main
n00.empfangen(n01);

//in my_class.cpp
void my_class::empfangen(my_class empfangenesObjekt)
{
	// mach was mit mir
}
Jedoch wie schon arj geschrieben hat: Was möchtest Du denn eigentlich machen?
andi7
Beiträge: 11
Registriert: 18. August 2009 15:03

Beitrag von andi7 »

Ich habe mal ein neuer Topic aufgemacht um alles zu erklären + bisheriger Gesamtcode + Alle Probleme und auch damit es übersichtlicher wird.
-> http://qtforum.de/forum/viewtopic.php?p=50043#50043
Antworten