Die Groß() Funktion ein Teil meiner Klasse ist:Funktion nimmt nicht 0 Argumente
class MyString {
public:
MyString();
MyString(char cstring[]);
void uppercase();
private
};
Und die Umsetzung für Groß nicht beendet ist, sondern sieht wie folgt aus:
void MyString::uppercase()
{
cout << "need to implement";
}
Als ich rufen sie die Funktion, sieht es wie folgt aus:
//Output streaming Operator Overload
ostream& operator<<(ostream& os, const MyString& string)
{
if (MyString::printAsUppercase == true)
uppercase();
else
os << string.data;
cout << "(" << string.length << ")";
return os;
}
Wenn ich versuche, den Code zu kompilieren, erhalte ich folgende Fehlermeldung:
Ich verstehe das wirklich nicht, wie ich den Prototyp erklärte, um keine Argumente zu nehmen, und folgte damit in der Implementierung. Die Funktion sollte keine Argumente annehmen müssen. Warum passiert das?
Und das ist, warum Sie [nicht verwenden 'using namespace std;'] (http://stackoverflow.com/questions/1452721/why- is-using-namespace-std-added-bad-practice) – NathanOliver
Beachten Sie den Unterschied zwischen Ihrem 'MyString :: Großbuchstaben' und der Compileranfrage nach' std :: Großbuchstaben'. Der schlechte Compiler ist verwirrt und ruft die falsche Funktion auf. – user4581301
Sie haben da ein paar Probleme auf der Hand: 1) 'using namespace std;' 2) Benennung des Arguments "string" (wie der std type - gebunden um Probleme zu verursachen) 3) benennt Ihre Funktion identisch mit dem 'std :: Großbuchstaben. –