Char to char* C++

Char to char* C++

本文关键字:C++ char to Char      更新时间:2023-10-16

我有一个错误与我的构造函数在我的类。

在我的。cpp文件中有:

Player::Player()
{
    m_name="Jane";
    m_amt=100;
}

在我的。h文件中我有:

// Default constructor, does nothing.
    Player();
    // Creates a Player. Player name and amount.
    Player(const char &name, int amt);

我得到错误:

error: invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]
  m_name="Jane";

所以我尝试将其转换为*char,但仍然不起作用。有人能帮忙吗?

你可以选择一个指针:

Player(const char* name, int amt) { ... }

,你可以用std::string来存储名字,用char*来构造这个字符串:

private:
    std::string m_name;
public:
    Player(const char* name, int amt) : m_name(name) { }

或者只是在所有地方使用std::string并通过引用传递以避免创建冗余副本:

private:
    std::string m_name;
public:
    Player(const std::string& name, int amt) : m_name(name) { }

注意最后一个版本是相当灵活的,也可以传递const char*给它,例如:

#include <iostream>
#include <string>
class Player {
private:
    std::string m_name;
public:
    Player(const std::string& name) : m_name(name){}
    void printName() { std::cout << m_name; }
};
int main() {
    Player p("Liho");
    p.printName();
}

显示完整的类/代码。以下编译对我来说很好。

cpp文件…

#include"player.h"
Player::Player()
{
    m_name="Jane";
    m_amt=100;
}

. h文件…

class Player {
public:
        // Default constructor, does nothing.
        Player();
        // Creates a Player. Player name and amount.
        Player(const char *name, int amt);
private:
        char* m_name;
        int m_amt;
};