c++,文字列配列ベクトルで原因のわからないコンパイルエラー
(参考書:明解c++中級編の426ページ)char* p[] = { "PAUL", "X", "MAC" };
のコメントでここですと示した場所なのですがなぜコンパイルエラーになるのですか?
[重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー C2440 '初期化中': 'const char [2]' から 'char *' に変換できません。]
///////////////////
[重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー (アクティブ) E0144 型 "const char *" の値を使用して型 "char *" のエンティティを初期化することはできません ]
と表示されてまい構文エラーが治せません、そもそも参考書のコードなので間違えてるとはおもえないのと初学者のためデバックに困っています。自分で少し書き換えてみましたがやはりわからないので回答をお願いしたいです。(コピペも試しました。)
#include "conio.h"
#//include <iomanip>
#include <string>
#include <iostream>
#include <vector>
//#include <algorithm>
//#include <functional>
//#include <typeinfo>
using namespace std;
vector<string> str2dary_to_vec(char* p, int h, int w)
{
vector<string> temp;
for (int i = 0; i < h; i++) {
temp.push_back(&p[i * w]);
}
return temp;
}
vector<string> strptary_to_vec(char** p, int n)
{
vector<string> temp;
for (int i = 0; i < n; i++)
{
temp.push_back(p[i]);
}
return temp;
}
int main()
{
// char* p[] = {"PAUL", "X", "MAC"};
char a[][5] = { "LISP","C","Ada" };
char* p[] = { "PAUL", "X", "MAC" };//ここです
vector<string> sa = str2dary_to_vec(&a[0][0],3,5);
for (vector<string>::size_type i = 0; i < sa.size(); i++) {
cout << "sa[" << i << "] " << sa[i] << "\n";
}
vector<string> sp = strptary_to_vec(p, 3);
for (vector<string>::size_type i = 0; i < sp.size(); i++) {
cout << "sa[" << i << "] " << sp[i] << "\n";
}
_getch();
return 0;
}