Steven548 2021-12-30 09:40 采纳率: 100%
浏览 43
已结题

C++ VS19 类的初始化

问题遇到的现象和发生背景

类的初始化

问题相关代码,请勿粘贴截图
#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如果直接使用字符串来初始化就报错

我想要达到的结果
  • 写回答

2条回答 默认 最新

  • bekote 2021-12-30 10:13
    关注

    直接使用字符串来初始化相当于是char* name= "Athena",定义了一个指针p指向字符串"Athena",但是字符串"Athena"都没有存在内存,也就没有地址,也没办法让指针指向它了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月7日
  • 已采纳回答 12月30日
  • 创建了问题 12月30日