Ich löschte gerade eine Frage, die für 4 Stunden unbeantwortet hatte. Ich habe es größtenteils durch Versuch und Irrtum für mich selbst beantworten können und scheint es bis auf ein Stück gut zu handhaben. Warum kann ich meine Karte nicht als Const deklarieren oder mache ich es falsch? Das vollständige Beispiel befindet sich unten.Karte nicht als const deklarieren und zuweisen
in Klasse Kopf
const std::map <char, char> UppercaseConvert;
in Klassenkonstruktors
const UppercaseConvert = { { 'A','a' },{ 'B','b' },{ 'C','c' },{ 'D','d' },{ 'E','e' },{ 'F','f' },
{ 'G','g' },{ 'H','h' },{ 'I','i' },{ 'J','j' },{ 'K','k' },{ 'L','l' },
{ 'M','m' },{ 'N','n' },{ 'O','o' },{ 'P','p' },{ 'Q','q' },{ 'R','r' },
{ 'S','s' },{ 'T','t' },{ 'U','u' },{ 'V','v' },{ 'W','w' },{ 'X','x' },
{ 'Y','y' },{ 'Z','z' } };
Es wird kompilieren und arbeiten, wenn ich die const von beide Deklaration und Definition zu entfernen, damit es nicht das Ende der Welt ist. Aber, da dies statisch sein sollte, sollte es nicht den const Typ haben?
Dies ist die Funktion, die sie in verwendet wird:
std::string BCLogic::ConvertToLowerCase(FString word) {
std::string ConvertedString;
for (char character : word) {
if (UppercaseConvert[character]) {
ConvertedString.push_back(UppercaseConvert[character]);
}
else ConvertedString.push_back(character);
}
return ConvertedString;
}
Edit:
#include <iostream>
#include <string>
#include <map>
class Converter {
public:
Converter();
std::string ConvertToLowerCase(std::string);
const std::map <char, char> UppercaseConvert; //remove const to compile
};
Converter::Converter() {
//remove const to compile
const UppercaseConvert = { { 'A','a' },{ 'B','b' },{ 'C','c' },{ 'D','d'},{ 'E','e' },{ 'F','f' },
{ 'G','g' },{ 'H','h' },{ 'I','i' },{ 'J','j' },{ 'K','k' },{ 'L','l' },
{ 'M','m' },{ 'N','n' },{ 'O','o' },{ 'P','p' },{ 'Q','q' },{ 'R','r' },
{ 'S','s' },{ 'T','t' },{ 'U','u' },{ 'V','v' },{ 'W','w' },{ 'X','x' },
{ 'Y','y' },{ 'Z','z' } };
}
std::string Converter::ConvertToLowerCase(std::string word) {
std::string ConvertedString;
for (char character : word) {
if (UppercaseConvert[character]) {
ConvertedString.push_back(UppercaseConvert[character]);
}
else ConvertedString.push_back(character);
}
return ConvertedString;
}
int main() {
Converter ThisConverter;
std::cout << "Enter a word in Caps:";
std::string word;
std::getline(std::cin, word);
word = ThisConverter.ConvertToLowerCase(word);
std::cout << "\n Your converted word is : " << word << std::endl;
return 0;
}
Bitte geben Sie echten Code ein. 'const std: map' ist ein Syntaxfehler. 'const UppercaseConvert =' ist ebenfalls ein Syntaxfehler. Schwer zu sagen, was du falsch machst, wenn du nicht genau zeigst, was du machst. Siehe [How to Ask] (http://stackoverflow.com/help/mcve) –
Sie irren sich mit irrelevanten Details. Ein weiterer Grund, ein [minimales vollständiges Beispiel] (http://stackoverflow.com/help/mcve) zu erstellen, ist eine gute Idee. – Beta
"da dies statisch sein sollte" - wenn es statisch sein sollte, warum hast du es dann nicht statisch gemacht? –