这个为什么会这样,应该要怎么解决

为什么会显示没有匹配

#include<iostream>
#include<fstream>
#include<iomanip>
#include<cstring>
using namespace std;
class AddressBook{
public:
  AddressBook(char* n, char* p, char* h);
  virtual void Display(ostream& out);
protected:
  char name[20];
  char phone[10];
  char handp[15];
};
AddressBook::AddressBook(char*n,char* p,char* h){
  strncpy_s(name, n, 19);  name[19]=0;
  strncpy_s(phone, p, 9);  phone[9]=0;
  strncpy_s(handp, h, 14); handp[14]=0;
}
void AddressBook::Display(ostream& out){
  out<<setiosflags(ios::left)<<setw(20)<<name
         <<setw(10)<<phone<<setw(15)<<handp<<endl;
}
ostream& operator<<(ostream& out, AddressBook& a){
  a.Display(out);
  return out;
}
int main(){
  AddressBook a1("Dill Arnson", "8869533", "13902201080");
  AddressBook a2("Welch Shammas", "6695482", "13023399001");
  AddressBook a3("Portel Braumbel", "5937221","13908032991");

  cout<<a1;
  cout<<a2;
  cout<<a3;
}

img

AddressBook(const char* n, const char* p,const char* h);改成这样试试

字符串常量匹配的类型应该是const char*