Ich habe ein Klasse "Betriebspunkt", die ich schon erfolgreich in meinem Programm verwende. Darin enthalten sind Menge und Druck sowie einige andere Daten, die ich jetzt gerne in einer zweiten Klasse "Kurve" verwenden möchte. Dazu würde ich gerne die Instanz der Klasse "Betriebspunkt" an die Klasse "Kurve" übergeben.
betriebspunkt.h:
Code: Alles auswählen
#ifndef BETRIEBSPUNKT_H
#define BETRIEBSPUNKT_H
#include <QMainWindow>
#include <QObject>
using namespace std;
class Betriebspunkt{
double menge;
QString menge_str;
double hoehe;
QString hoehe_str;
double dichte;
double visk;
public:
Betriebspunkt();
Betriebspunkt(double q, QString q_str, double h, QString h_str, double dens, double v = 1.0, QString v_str = "mm2/s");
double get_m3h();
double get_m();
double get_bar();
};
Code: Alles auswählen
#include <betriebspunkt.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <mainwindow.h>
using namespace std;
Betriebspunkt::Betriebspunkt(){}
Betriebspunkt::Betriebspunkt(double q,
QString q_str,
double h,
QString h_str,
double dens,
double v,
QString v_str){
if (dens >= 0){
set_kgm3(dens);
}else{
meldung("Dichte muss > 0 sein.");
}
double Betriebspunkt::get_m3h(){
return m3h;
}
double Betriebspunkt::get_m(){
return m;
}
double Betriebspunkt::get_bar(){
return bar;
}
Code: Alles auswählen
#ifndef KURVE_H
#define KURVE_H
#include <QMainWindow>
#include <QObject>
#include <betriebspunkt.h>
class Kurve{
Betriebspunkt bp;
double qmin;
double qmax;
double q_opt;
QVector<double> f_parameter;
QVector<double> q_sonder;
public:
Kurve();
Kurve(Betriebspunkt bp,
double qmin,
double qmax,
double q_opt,
QVector<double> f_parameter,
QVector<double> q_sonder);
};
#endif // KURVE_H
Code: Alles auswählen
#include <kurve.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <mainwindow.h>
#include <betriebspunkt.h>
using namespace std;
Kurve::Kurve(Betriebspunkt bp,
double qmin,
double qmax,
double q_opt,
QVector<double> f_parameter,
QVector<double> q_sonder){
cout << "-->" << bp.get_qstr().toStdString() << "<--"<< endl;
if(bp.get_m3h() > 0){
cout << "Wert ist vorhaenden" << endl;
}
}
Code: Alles auswählen
Betriebspunkt bp_1{qbet,
"Text1",
hbet,
"Text2",
998,
1.5,
"mm2/s"};
Kurve kurve_1{&bp_1,
40,
340,
qopt,
psetp,
swerte};
..
Kurve::Kurve(Betriebspunkt bp,
..
if(bp.get_m3h() > 0){
..
Das Ergebnis:
Kompilieren geht durch, aber die Ausgabe von bp.get() ist leer.
Dann so:
..
Kurve::Kurve(Betriebspunkt &bp,
..
if(bp.get_m3h() > 0){
..
Das Ergebnis:
D:\dl\Dateien\Entwicklung\CPP\PPro\kurve.cpp:10: Fehler: uninitialized reference member in 'class Betriebspunkt&' [-fpermissive]
Kurve::Kurve(Betriebspunkt &bp,
^
Dann so:
..
Kurve::Kurve(Betriebspunkt *bp,
..
if(bp->get_m3h() > 0){
..
Das Ergebnis:
D:\dl\Dateien\Entwicklung\CPP\PPro\digitalisierung.cpp:111: Fehler: no matching function for call to 'Kurve::Kurve(<brace-enclosed initializer list>)'
swerte};
^
Ich weiss nicht weiter