2014-03-27 5 views
0

내 클래스의 생성자에 오류가 있습니다.Char to char * C++

Player::Player() 
{ 

    m_name="Jane"; 
    m_amt=100; 
} 

을 내 .H 파일에 내가있어 : 내 .cpp 파일에서

내가있어

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

// Default constructor, does nothing. 
    Player(); 

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

나는 오류를 받고 있어요

그래서 그것을 *char으로 변환하려고 시도했지만 여전히 작동하지 않습니다. 누군가 제발 도와 드릴까요?

+1

'CONST 차르가 'A * * 단일 문자에 대한 레퍼런스가 아니라 그 배열이다. – Wyzard

+0

방금'const'를 없애겠습니까? – user1985351

+0

은 여전히 ​​단일 문자에 대한 참조입니다. –

답변

4

당신은 포인터 걸릴 수 있습니다 :

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

그리고 당신은이 문자열을 구성하기 위해 이름을 저장하고 char*를 사용하는 std::string을 사용할 수

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) { } 
#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(); 
} 
0

가 전체 클래스/코드를보기 : 예,

주 마지막 버전은 매우 융통성이 있고 또한 그것에 const char*를 통과 할 수 있습니다. 다음은 나를 위해 컴파일을 잘한다.

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; 

}; 
+0

char *에 리터럴 지정 @ – codah

+0

@codah 어떨까요? – cedoc