4時間未回答の質問を削除しました。私はほとんどの場合、試行錯誤を通して自分自身でそれに答えることができ、1つの部分を除いてその上で良い扱いをしているようです。なぜ私はconstとして地図を宣言しないのですか、それとも間違っていましたか?完全な例は下部にあります。クラスのコンストラクタでマップをconstとして宣言して割り当てることはできません
クラスヘッダーでconst std::map <char, char> UppercaseConvert;
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' } };
それが世界の終わりではないので、私は宣言と定義の両方からのconstを削除する場合は、コンパイルして動作します。しかし、これは静的でなければならないので、const型を持つべきではありませんか?
これは、それが中で使用されている機能です。
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;
}
編集:完全な例あなたはconstのを削除しない限り、コンパイルされません。
#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;
}
実際のコードを投稿してください。 'const std:map'は構文エラーです。 'const UppercaseConvert ='も構文エラーです。あなたが行っていることを正確に示さなければ、間違っていることを言うのは難しいです。 [Ask to Ask](http://stackoverflow.com/help/mcve)を参照してください。 –
あなたは無関係の細部で自分を混乱させるでしょう。 [最小完全な例を用意する]もう一つの理由(http://stackoverflow.com/help/mcve)は良い考えです。 – Beta
"これは静的である必要があるため" - 静的にする必要がある場合はなぜ静的にしませんでしたか? –