dポイントプレゼントキャンペーン実施中!

現在C++の勉強をしております、初心者です。
独習C++という本を元に勉強しておりまして、そのテキストに記載のプログラムをそのまま一度書き写したところエラーが出てしまいました。
テキスト通りに入力したため理由が全くわかりません。
エラーの内容としては、下記のプログラムのメイン文内で「コンストラクタ”name::name”のインスタンスが引数リストと一致しません」「コンストラクタ”phonenum::phonenum”のインスタンスが引数リストと一致しません」 というものです。
visual studio 2019で作成しています。
どなたかわかる方どこを直せば良いのか、どういう理由なのかを教えてください。よろしくお願いします。

#include <iostream>
#include <map>
#include <cstring>
using namespace std;

class name
{
char str[20];
public:
name() { strcpy(str, ""); }
name(char* s) { strcpy(str, s); }
char* get() { return str; }
};

bool operator<(name a, name b)
{
return strcmp(a.get(), b.get()) < 0;
}

class phonenum
{
char str[30];
public:
phonenum() { strcpy(str, ""); }
phonenum(char* s) { strcpy(str, s); }
char* get() { return str; }
};

int main()
{
map<name, phonenum> m;
m.insert(pair<name, phonenum>(name("joe"), phonenum("342")));//ここでエラー
m.insert(pair<name, phonenum>(name("tom"), phonenum("123")));//同様のエラー
m.insert(pair<name, phonenum>(name("jesse"), phonenum("456")));//同様のエラー
m.insert(pair<name, phonenum>(name("mike"), phonenum("987")));//同様のエラー

char str[80];
cout << "名前を入力:";
cin >> str;

map<name, phonenum>::iterator p;
p = m.find(name(str));
if (p != m.end())
cout << "電話番号:" << p->second.get() << endl;
else
cout << "名前がマップにありません\n";
return 0;

}

「プログラミングC++のmapについて」の質問画像

A 回答 (1件)

mapのキーと値の追加方法は以下のような感じですよ



m["joe"]=342;
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!