对于下面的类,我想制作一个包含10个Ship()对象的向量
但是这会产生以下编译错误来自' int'的无效转换到#char; char *' [-fpermissive]
(如果我省略矢量线,它编译得很好)
我做了一点搜索,找不到答案。
class Ship
{
protected:
std::string name;
public:
Ship(std::string name="Ship")
{
std::ostringstream tmp;
std::string temp;
tmp << name << ++id;
name = tmp.str();
}
};
main()
中的矢量声明#include <iostream>
#include <vector>
#include <string>
#include "Ship.h"
using std::cout;
using std::endl;
using std::vector;
int main()
{
vector<Ship> Shipyard; //10% of map dimension is number of ships
Shipyard.push_back(Ship(10)); //push_back(Ship(),10); doesn't work also
}
答案 0 :(得分:1)
您正在构建一个Ship
对象,其值为10
。由于构造函数采用std::string
,因此无法将整数传递给构造函数。
添加10艘船:
std::vector<Ship> ShipYard(10);
或
std::vector<Ship> ShipYard;
ShipYard.resize(10);
答案 1 :(得分:1)
构造函数采用std::string
,但您传递的是整数
对于同名的10个对象构造,请使用constructor of std::vector
的第2个表单:
vector<Ship> Shipyard( 10, Ship() );
答案 2 :(得分:0)
Ship(10)
这将尝试创建一个Ship对象并调用构造函数。但是,构造函数将string
作为参数,因此会出错。
创建10 Ship
使用的向量:
vector<Ship> Shipyard(10, Ship());