Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Objekt Programmierung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (5): « erste ... « vorherige 2 3 [4] 5 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Objekt Programmierung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Windows
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ja ich habe gelesen und verstanden das man z.B am ende auch a+b adieren kann .

Soll ich den linken operanden auch defineren so?

CTitle operator+( CTitle left);

Oder irgendwie mit this darauf zugreifen?
15.10.2016 22:38
Windows
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hat jemand noch tipps ?

Weil selber komme ich leider nicht weiter und versuche programmieren zu lernen
16.10.2016 17:48
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Du hast den <<-Operator mit zwei Operanden überladen. Überlade der Einfachheit halber doch den +-Operator auch mit zwei Operanden.

Gruß,

Karlito
16.10.2016 19:31 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Windows
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meinst du es so?
CTitle operator+( CTitle right);
CTitle operator-( CTitle left);
16.10.2016 21:15
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Nee. Sowas:

code:
1:
2:
3:
CTitle& operator+(CTitle& lop, CTitle& rop);


Gruß,

Karlito
16.10.2016 21:36 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Windows
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wieso hat man das so gemacht Karlito?

Waren meine vorigen Ansätze falsch die ich gepostet hab ?

Sind das jetzt sozusagen die rechten und linken Operanden ?lop und rop?
16.10.2016 22:03
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Es gibt mehere Möglichkeiten Operatoren zu überladen. Eine ist die, die Du gewählt hast. Dabei überläd man den Operator in der entsprechenden Klasse und bekommt nur einen Operanden übergeben. Der andere Operand ist ein Objekt der Klasse in der Du den Operator überlädst. Wichtig ist dabei wie gesagt, dass der Operator in der Klasse überladen wird.
Der allgemeine Weg Operatoren zu überladen ist außerhalb der Klasse. Dabei werden zwei Parameter übergeben. Der linke und der rechte Operand. Und ja, genau das sind lop und rop bei mir.

Gruß,

Karlito
18.10.2016 09:59 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Windows
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
Header:
CTitle& operator+(CTitle& lop, CTitle& rop);


cpp+:
CTitle::CTitle& operator+(CTitle& lop, CTitle& rop) {

if( wie soll ich in der Bedingung einbauen das die Bitrate nicht stimmt?

So  ?( If bitrate!=bitrate ?  wär ezu einfach :D

}

18.10.2016 10:33
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Greife auf die Getter für die entsprechenden Attribute der Operanden zu und vergleiche diese.

Gruß,

Karlito
18.10.2016 12:18 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Windows
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Bin glaub ich fast fertig mit der f) .Nur noch zwei Probleme am Ende .

Warum werden die Fehler angezeigt?

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:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:

/*
 * CTitle.h
 *
 *  Created on: 03.08.2016
 *      Author: VAIO
 */


#ifndef CTITLE_H_
#define CTITLE_H_

#include <string>
#include <iostream>

using namespace std;

/**
 * Diese Klasse beschreibt einen MP3-kodierten Titel (Song).
 */
class CTitle
{
private:
	/** Name (Titel) des Songs */
	string m_name;

	/** Ausführende(r) (Interpret, Gruppe, Orchester o. ä.) */
	string m_performer;



	/** Die Dauer des Titels in Sekunden. */
	int m_duration;

	/** Die Bitrate in bit/s. */
	int m_bitRate;

	/** Die Größe (Anzahl der Bytes) der Audiodaten. */
	double m_contentSize;

public:
	/**
	 * Erzeugt ein neues Objekt, dessen Attribute mit den angegebenen
	 * Werten initialisiert werden.
	 *
	 * Falls Name oder Ausführende(r) (performer) leer sind, werden
	 * die Default-Werte verwendet.
	 *
	 * Die Angabe der Bitrate erfolgt in bit/s.
	 *
	 * Die Bitrate muss zwischen 32000 und 320000 bit/s liegen.
 	 * Falls diese Zusicherung verletzt wird, werden die Attribute
	 * m_bitRate, m_duration und m_contentSize auf 0 gesetzt.
	 */
	CTitle(int contentSize = 0, int duration = 0,
		   string name = "(Untitled)", string performer = "(Unknown)",
		   int bitRate = 128000);

	/**
	 * Diese Methode liefert den Namen des Titels.
	 */
	string getName() const;

	/**
	 * Diese Methode liefert den Ausführenden (Performer).
	 */
	string getPerformer() const;


	/**
	 * Diese Methode liefert die Dauer (Länge) des Titels in Sekunden.
	 */
	int getDuration() const;

	double getContentsize();

	friend CTitle& operator+(CTitle& lop, CTitle& rop);
	friend ostream& operator<< (ostream& lop, CTitle& rop);
};






#endif /* CTITLE_H_ */



cpp

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:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:

 #include "CTitle.h"
#include <string>
#include<iostream>
using namespace std;

CTitle::CTitle(int contentSize, int duration, string name, string performer, int bitRate)
{
	//Die Bitrate muss zwischen 32000 und 320000 bit/s liegen.
	if (bitRate >= 32000 && bitRate <= 320000)
	{
		m_contentSize = contentSize;
		m_duration = duration;
		m_bitRate = bitRate;
	}
	else
	{
	//Falls diese Zusicherung verletzt wird, werden die Attribute
	//m_bitRate, m_duration und m_contentSize auf 0 gesetzt.
		m_contentSize = 0;
		m_duration = 0;
		m_bitRate = 0;
	}

}



 string CTitle::getName() const
{
	return m_name;
}

string CTitle::getPerformer() const
{
	return m_performer;
}



int CTitle::getDuration() const
{
	return m_duration;
}

double CTitle::getContentsize(){

	return m_contentSize;
}


ostream& operator<< (ostream& lop, CTitle& rop){

	lop<< &rop << " " << rop.getName();
	lop<< "; " << rop.getPerformer();
	lop<< " ; " << rop.getDuration();
	lop << " s"; //Ausgabe um s erweitert

	if (rop.getContentsize() > 9999 * 1024){ // > 9999 KiB
		lop << rop.getContentsize() / (1024 * 1024) << " MiB";
	}
	else if (rop. getContentsize() > 9999){ // > 9999 B
		lop << rop.getContentsize() / 1024 << " KiB";
	}

	else{
		lop << rop.getContentsize() << " B";
	}


return lop;

}

CTitle& operator+(CTitle& lop, CTitle& rop){
	if(lop.m_bitRate != rop.m_bitRate){
		cout << lop << endl;







	}
	if(lop.m_bitRate == rop.m_bitRate){
		cout <<lop.m_name << endl;


	}

	if(lop.m_name == rop.m_name){

		cout << lop.m_name+rop.m_name << endl;


	}

	if(lop.m_name != rop.m_name){

		cout << lop.m_performer << ", "<< rop.m_performer;
	}


	m_duration = lop.m_duration + rop.m_duration;
	m_contentSize = lop.m_contentSize + rop.m_contentSize;

}









main

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:

#include "CTitle.h"
#include <string>
#include<iostream>
using namespace std;

int main(){

	CTitle a(0,2,"titlel","0",23456);
	cout<< a <<endl;



}



Description Resource Path Location Type
'm_contentSize' was not declared in this scope CTitle.cpp /CTitle line 107 C/C++ Problem

Description Resource Path Location Type
'm_duration' was not declared in this scope CTitle.cpp /CTitle line 106 C/C++ Problem

Description Resource Path Location Type
Symbol 'm_contentSize' could not be resolved CTitle.cpp /CTitle line 107 Semantic Error

Description Resource Path Location Type
Symbol 'm_duration' could not be resolved CTitle.cpp /CTitle line 106 Semantic Error
18.10.2016 20:23
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Getter verwenden.

Gruß,

Karlito
19.10.2016 12:21 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Windows
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Was meinst du mit getter ?

Die getter methode ist doch in der cpp eingebaut .

Soll ich irgendwie auf das getter zugreifen ?
19.10.2016 14:26
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Schaue wie es bei << gemacht wird.
19.10.2016 15:35 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Windows
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Was meinst du mit<<?
19.10.2016 15:50
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Du hast den Operator << überladen. Schaue nach, wie es dort gemacht ist.
19.10.2016 16:07 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Seiten (5): « erste ... « vorherige 2 3 [4] 5 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Objekt Programmierung