Hilfe! :-)

PPatrickFfm

Grünschnabel
Hallo zusammen!

Ich bräuchte mal Hilfe, denn mein Prog tut´s net richtig! Ist ein Fehler drin, der mir zwar irgendwie klar ist ... irgendwie aber auch nicht! (Fehler C2679, Visual) *grübel*

Meiner Ansicht nach ist alles soweit o.k., was habe ich übersehen?!

Wäre prima, wenn man jemand drüber schaun würde! :)

klasse.h

Code:
#ifndef _KLASSE_H_
#define _KLASSE_H_

#include <conio.h>
#include <iostream.h>
#include <string.h>
#include <ctype.h>

class CString
{  
	protected:
		char *zeichenkette;
		unsigned int laenge;
		unsigned int groesse;

	private:
		static unsigned int zaehler;

    public:
		CString(unsigned);    
		CString( char * ="");
		CString(CString&);
		~CString();
			 
		bool operator== (CString&);
		bool operator!= (CString&);
		CString operator+ (CString&);
		CString& operator= (CString&);

		void ausgabe(ostream& = cout) ;
		void einlesen(istream& = cin);
		unsigned int getzaehler(){return ++zaehler;};
  };

class CStringNeu : public CString
{		  
	public:
		int wortezaehler();
		CStringNeu operator++ ();
		CStringNeu operator-- ();
		bool operator< (CStringNeu&);
		CStringNeu (char * ="");		
};

#endif


main.cpp
Code:
#include "klasse.h"
#include "operator.h"

void main()
{ 
    char worte[40];
    cout<<"Gebe einen Text ein:  "; 
    cin.getline(worte,sizeof(worte)); 
    CStringNeu text_1(worte);
    CStringNeu text_2;
    CStringNeu erg;
    if (text_1 == CStringNeu(""))
	{
		cout <<"Keine Eingabe erfolgt\n";
	}
	cout<<"Gebe einen Text ein: ";
    cin>> text_2;
    if (text_2 == CStringNeu(""))
	{
		cout <<"Keine Eingabe erfolgt\n";  
	}
	else                                  
	{  
		cout << text_1 << endl << text_2 << endl;
		erg = text_1 + text_2;
		cout << erg << endl;
		++erg;
		cout<<" Grossschrift: "<< erg <<endl;
		--erg;
		cout<<"Kleinschrift : "<< erg <<endl; 
		if(text_1<text_2)
		{
			cout<< text_1 <<" ist lexikalisch kleiner als "<< text_2 <<endl;
		}
		else
		{
			cout << text_1 <<"    ist lexikalisch groesser als    " << text_2 << endl;
			//cout<<"\nAnzahl der Worte : "<< erg.wortezaehler() << endl;
		}
    }
}


Der Fehler liegt offensichtlich in der Klasse (CStringNeu, Konstruktor) ... oder muss ich eine Typkonvertierung vornehmen? Wenn ja, weiß ich aber irgendwie nicht warum ...? :(

- Der Vollständigkeit halber habe ich alle Dateien angehängt ... auch wenn Sie nicht unbedingt nötig sind -

Danke für Eure Hilfe!
 
Zuletzt bearbeitet:
- Der Vollständigkeit halber habe ich alle Dateien angehängt ... auch wenn Sie nicht unbedingt nötig sind -
Du musst die Dateien nicht siezen. ;)

Und was meinst du mit dem Konstruktor? Weder für CString noch für CStringNeu stellt du einen (Default-) Konstruktor zur Verfügung. Ich weiss nicht, ob dass dein Problem verursacht, aber den solltest du schon festlegen.
 
Es wäre auch hilfreich, wenn du die Zeile markieren könntest, die der Compiler bemängelt. So findet man die Ursache schneller. ;)
Und nach Möglichkeit auch bitte die genauen Wortlaute der Fehlermeldungen posten. :)
 
Hallo!

Danke für eure Antworten.

@Peter:

Also Konstruktoren habe ich ja wohl genug, oder meinst du nicht?!

Daran liegt´s meiner Meinung auch nicht ... es sei denn es sollte tatsächlich noch eine rnötig sein. ABER, wie soll der Aussehen?! Ich habe keine Idee.

@Dario:

Du hättest den Fehler doch einfach nur in der Hilfe eingeben brauchen(sofern du mit Visual arbeitest). Aber schau hier, der Fehler:

Binärer Operator 'Operator' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class CString' akzeptiert (oder keine geeignete Konvertierung möglich)

Zeile 25

Sowohl "erg", als auch "text_1" & "text_2" sind vom Typ CStringNeu.

Ich habe wirklich NULL Ahnung, was da schief gelaufen ist.

Danke,

Pit
 
Sorry, in der main()!

Die Zeile lautet: erg = text_1 + text_2;

BTW: Kann man den Text / Code nachträglich (noch) editieren, oder ist das den Moderatoren vorbehalten?
 
Zurück