类的初始化
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
#include <string>
using namespace std;
class Hero
{
int speed;
char* name;
public:
Hero(int speed, char* name) :speed(speed), name(name) {}
};
int main(void)
{
// ----OK
char name[32] = "Athena";
//Hero Athena = { 20, name };
// ----Err
Hero Athena_1 = { 20, "Athena" };
return 0;
}
E0289 no instance of constructor "Hero::Hero" matches the argument list
参见代码
1如果用一个变量name来初始化,就没问题
2如果直接使用字符串来初始化就报错
直接使用字符串来初始化相当于是char* name= "Athena",定义了一个指针p指向字符串"Athena",但是字符串"Athena"都没有存在内存,也就没有地址,也没办法让指针指向它了
我测试的都没有报错啊,你用的是什么编译器