Hallo,
beim Schreiben eines Programmes, bin ich auf eine sehr unlogische Sache gestoßen.
Zur Verdeutlichung hier die Headerdatei der Klasse, in der das Problem auftritt:
Wenn ich nun die Funktion wie folgt aufrufe:
wird nun nicht die erste Funktion, sondern die Zweite (die, die einen boolschen Wert und opional ein Zeichen erwartet) ausgeführt.
Verhindern kann ich dies nur wenn ich "Hallo" explizit in einen string umwandle:
Das ist ja aber nicht Sinn und Zweck der Überladung...
Kann mir bitte jemand das Verhalten erklären und wie ich das beheben kann?
Ich wäre wirklich dankbar, wenn mir hier jemand helfen kann.

beim Schreiben eines Programmes, bin ich auf eine sehr unlogische Sache gestoßen.
Zur Verdeutlichung hier die Headerdatei der Klasse, in der das Problem auftritt:
Code:
#pragma once
#include <string>
using namespace std;
class layout
{
public:
static string zeile(string text, string ausrichtung = "zentriert");
static string zeile(bool voll, char zeichen = '*');
};
Wenn ich nun die Funktion wie folgt aufrufe:
Code:
cout << layout::zeile("Hallo");
wird nun nicht die erste Funktion, sondern die Zweite (die, die einen boolschen Wert und opional ein Zeichen erwartet) ausgeführt.
Verhindern kann ich dies nur wenn ich "Hallo" explizit in einen string umwandle:
Code:
cout << layout::zeile(static_cast<string>("Hallo"));
Das ist ja aber nicht Sinn und Zweck der Überladung...
Kann mir bitte jemand das Verhalten erklären und wie ich das beheben kann?
Ich wäre wirklich dankbar, wenn mir hier jemand helfen kann.

.
. Es gibt bei Zeigern zwei verschiedene const: