[解決済み] C++で文字列定数から「char*」への変換が非推奨に
2022-03-11 04:58:44
質問
を持つクラスがあります。
private char str[256];
で、そのために明示的なコンストラクタを持っています。
explicit myClass(const char *func)
{
strcpy(str,func);
}
として呼んでいます。
myClass obj("example");
これをコンパイルすると、次のような警告が表示されます。
文字列定数から 'char*' への非推奨の変換。
なぜこのようなことが起こるのでしょうか?
どうすればいいですか?
これは、次のような状況になったときに表示されるエラーメッセージです。
char* pointer_to_nonconst = "string literal";
なぜか?CとC++では、文字列リテラルの型が異なります。Cではcharの配列で、C++では
定数
の配列です。いずれにせよ、文字列リテラルの文字を変更することは許されないので、C++のconstは制限というより、型安全性のためのものです。からの変換は
const char*
から
char*
は、安全上の理由から、明示的にキャストしないと一般に不可能です。しかし、Cとの後方互換性のために、C++言語では、文字列リテラルを
char*
で、この変換が非推奨であることを警告してくれます。
ということは、どこかに1つ以上の
const
をconstの正しさのためにプログラムに入れてください。しかし、あなたが見せてくれたコードは、このような非推奨の変換を行っていないので、問題ではありません。警告は他のところから来たのでしょう。
関連
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み] GCCで「文字列定数から'char*'`への非推奨の変換」という警告を消すにはどうしたらいいですか?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】ファイルから整数を読み込んで配列に格納する C++ 【クローズド
-
[解決済み】変数やフィールドがvoid宣言されている
-
[解決済み】Eclipse IDEでC++エラー「nullptrはこのスコープで宣言されていません」が発生する件