2014-10-18 2 views
1

배의 객체가 생성 된 시간과 동일한 고유 한 ID 번호를 부여하려했습니다. 따라서 자바에서 알 수있는이 코드를 시도했지만 내가 먼저 문자열로 INT로 변환해야 GNU C++ 컴파일러 (만 선언에서 작동 구현)String과 int 유형의 연결 (선언시!)

#include <iostream> 
static int id = 0; 

class Ship:private Vehicle 
{ 
    Ship() 
    { 
     id++; 
     this->name="Pirate"+id; 
    } 
} 
+1

이름의 유형은 무엇을 쓸 수 있을까? –

+0

@VladfromMoscow 문자열입니다 – hitter

답변

3
// C++98 

Ship() { 
    std::ostringstream tmp; 
    tmp << "Pirate" << ++id; 
    name = tmp.str(); 
} 

// C++11 

Ship() : name("Pirate" + std::to_string(++id)) {} 
1

싶습니다

이름이 상위 클래스 차량 상속) 불행하게도 작동합니다. idstd::to_string(id)으로 대체하십시오.

2

데이터 멤버의 이름은 다음 std::string를 입력 할 경우 당신이

this->name = "Pirate" + std::to_string(id); 
+0

'this-> name'이 아니라'this.name'을 의미합니다. 편집을 시도했지만 문자는 2 자입니다. – zmb

+1

@zmb 복사와 붙여 넣기를 의미했습니다 :) –

+0

@Vlad from Moscow 올바른 C++은 클래스를 구조체로 간주하고 클래스 필드는 구조체 멤버와 같기 때문에 this-> name 대신 this-> name입니다. – hitter