[英]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.