C++ Programmierung - Seite 2

Neue Frage »

Auf diesen Beitrag antworten »
eulerscheZahl

Genau, und du musst auch wieder darauf zugreifen können.
Es macht keinen Sinn, Variablen Messwert1, Messwert2, ... anzulegen.
Ein Array geht auch nicht, weil du nicht weiß, wie viele Messwerte gespeichert werden sollen. Daher die dynamische Speicherreservierung.
 
Auf diesen Beitrag antworten »
Jassy

void print(){
double *m_valueZeiger = new double;

// Zugreifen mit this

cout << &m_value << this << endl;

}

So könnte ich doch den Wert ausgeben oder euler?

Die grundeinheit ist ja (m_exp)

.

Die kann ich ja einfach:

cout << exp endl; machen.

Als Bsp:

haben die das gegeben:

CMeasSeries@0012FE9C[50]:
leere Messreihe
CMeasSeries@0012FE9C[50]:
0: MeasValue@003467CC: 3.5*10^&#8208;3 V
1: MeasValue@003467FC: 500*10^&#8208;6 V
2: MeasValue@0034682C: 2.5*10^0 V
Maximalwert der Messreihe: MeasValue@0012FE6C: 2.5*10^0 V
Drücken Sie eine beliebige Taste . . .

Stimmt meine idee ein wenig?
Auf diesen Beitrag antworten »
eulerscheZahl

Die Ausgabe wird etwa so gehen:
code:
1:
2:
3:
4:
5:
void CMeasSeries::print()
{
	for(int i = 0; i < m_curValues; i++)
		cout << *(m_values + i) << endl;
}

kann es leider nicht testen, da das Einlesen bei mir noch nicht klappt.
Du brauchst auf jeden Fall einen Zeiger vom Typ CMeasValue (dann hat ein Objekt auch die Größe von 16 Byte, keine 8 wie bei double).
Auf diesen Beitrag antworten »
Jassy

Meinst du es so euler:

Du brauchst auf jeden Fall einen Zeiger vom Typ CMeasValue (dann hat ein Objekt auch die Größe von 16 Byte, keine 8 wie bei double).

double *m_valueCMeasValue = new double;

müsste ich danach den Speicher nicht initialiesieren ?

So:

double * m_valueCMeasValue = new double[];
 
Auf diesen Beitrag antworten »
eulerscheZahl

Nein, kein double:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
CMeasSeries::CMeasSeries(string baseUnit, int maxValues)
{
	if(maxValues > 0)
	{
		m_maxValues = maxValues;
		m_baseUnit = baseUnit;
	}
	else
	{
		m_baseUnit = "";
		maxValues = 10;
	}
	m_curValues = 0;
	m_values = (CMeasValue*)malloc(m_maxValues * sizeof(CMeasValue));
}

CMeasSeries::~CMeasSeries()
{
	free(m_values);
}

bool CMeasSeries::put(double value, int exp, string baseUnit)
{
	if(m_curValues < m_maxValues)
	{
		cout << "m_values = " << m_values << endl;
		cout << "m_values + m_curValues = " << m_values + m_curValues << endl;
		cout << "m_values + 1 = " << &m_values[1] << endl;
		m_values[m_curValues] = CMeasValue(value, exp, baseUnit);
		cout << "didIt\n";
		m_curValues++;
		return true;
	}
	return false;
}

Aber das funktioniert nicht.
Naja, vielleicht später, ich bin jetzt erst mal weg.
Auf diesen Beitrag antworten »
eulerscheZahl

Jetzt aber:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
CMeasSeries::CMeasSeries(string baseUnit, int maxValues)
{
	if(maxValues > 0)
	{
		m_maxValues = maxValues;
		m_baseUnit = baseUnit;
	}
	else
	{
		m_baseUnit = "";
		maxValues = 10;
	}
	m_curValues = 0;
	m_values = new CMeasValue[m_maxValues]; //Speicherreservierung
}

CMeasSeries::~CMeasSeries()
{
	delete[] m_values; //Speicherfreigabe
}

bool CMeasSeries::put(double value, int exp, string baseUnit)
{
	if(m_curValues < m_maxValues)
	{
		m_values[m_curValues++] = CMeasValue(value, exp, baseUnit);
		return true;
	}
	return false;
}
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »