2014-10-18 39 views
1

我想给一个唯一的ID号码等于创建一个类的对象的时间 因此,我尝试了这个代码,我知道从Java(但它不不幸的是工作)字符串和int类型的连接(在声明!)

名称由父类车辆 继承我想,在GNU C++编译器(只有申报工作,您需要先INT转换为字符串实现)

#include <iostream> 
static int id = 0; 

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

是什么名字的类型? – 2014-10-18 18:06:44

+0

@VladfromMoscow它是字符串 – hitter 2014-10-18 18:30:39

回答

3
// C++98 

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

// C++11 

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

。将id替换为std::to_string(id)

2

如果数据成员名称的类型为std::string,那么你可以写

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

你的意思是'this-> name',而不是'this.name'。我试图编辑但只有2个字符。 – zmb 2014-10-18 18:13:03

+1

@zmb我的意思是复制和粘贴。:) – 2014-10-18 18:13:55

+0

@Vlad from Moscow正确的是this-> name而不是this.name,因为C++认为类是结构体和类字段就像结构体成员一样? – hitter 2014-10-18 18:32:03