簡體   English   中英

字符到字符* C ++

[英]Char to char* C++

我的班上的構造函數出現錯誤。

在我的.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;

};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM