質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

解決済

C++において,文字列リテラルから 'char*型' への変換が非推奨? エラーメッセージ

yakkuru
yakkuru

総合スコア9

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

2回答

0リアクション

1クリップ

47854閲覧

投稿2015/05/10 14:30

こんにちは,初めて投稿をさせてもらいます。

参考書を読んでいて,あるソースコードをコンパイルしたときに,以下のメッセージが出ました。

warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]

char *subname[] = {"Math", "English", "Science"};
^

lang

#include<iostream> #include<string.h> using namespace std; class Student{ public: void SetID(int num){ id = num; } void SetName(char *str){ strcpy(name, str); } int GetID(){ return id; } char *GetName() const{ return (char *)name; } private: int id; char name[30]; }; enum Subjects{Math, English, Science}; class Exam{ public: void SetInfo(int id, char *name, Subjects s, int num); int GetPoint() const{ return point; } void GetResult(char *buf) const; Student student; private: Subjects subject; int point; }; void Exam::SetInfo(int id, char *name, Subjects s, int num){ student.SetID(id); student.SetName(name); subject = s; point = num; } void Exam::GetResult(char *buf) const{ char *subname[] = {"Math", "English", "Science"}; sprintf(buf, "%s:%d", subname[subject], point); } void PrintResult(const Exam &Exam){ cout << Exam.student.GetName() << endl; char buf[30]; Exam.GetResult(buf); cout << buf << endl; } int main(){ Exam Exam[3]; Exam[0].SetInfo(1, "Ken", Math, 60); PrintResult(Exam[0]); return 0; }

「文字列リテラルから 'char*型' への変換は非推奨です。」ということなのですが,
0. このソース内の,どこで変換を実施しようとしているのか。
0. 実行出来るようにはどのように変えればいいのか。
0. 非推奨ということは,無理矢理実行することも可能なのか。
を教えていただきたいです。よろしくお願いします。

ソースコードの引用元 (株)アンク著「C++の絵本」 (一部改変)

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。