我应该如何将char *转换为Class类型

时间:2014-03-21 16:22:59

标签: c++

我试图将一个char *投射到我自己制作的一个类中,并且似乎无法让它工作而没有错误告诉我,我根本无法施放{{ 1}}输入char*(我的班级名称)。字符指针来自指针数组Player,即Austin或Kyle。有了这个,我认为char *names[i], i = any index, names[i] = one of the namesi,但我可能是错的。

我想要实现的目标是在向量中迭代char*Player每个push_back的向量,同时将char* i转换为键入播放器。我当然希望这个具体到足够,如果被问到我会澄清。

i

2 个答案:

答案 0 :(得分:0)

听起来您想为字符串数组中的每个名称创建一个Player对象。

如果是这种情况,您真的不想将char *投射到Player,您希望为每个{Player构建char * 1}}在您的数组中。类似的东西:

for (int i = 0; i < nameCount; i++)
{
    Player *p = new Player(names[i]);

    // Do something with p
    v.push_back(p); // ?? or something
}

这假设您的Player类有一个如下所示的构造函数:

Player::Player(const char *name)

vstd::vector<Player>

如果您的Player类具有此构造函数,则该语言实际上允许将char *隐式转换为Player(这可能是您在尝试转换char时所考虑的内容*进入球员):

for (int i = 0; i < nameCount; i++)
{
    v.push_back(names[i]); // adds a new Player, using the name stored in names[i]
}



编辑:您的Player类还需要一个默认构造函数:

class Player {

    public:
        Player(const char *name);
        Player() {};  // should probably initialize m_name and m_funds in here (set to 0 or something) just to be pedantic

    private:
        int m_funds;
        char *m_name;
};

将对象放入容器(例如std :: vector。

)时需要这样做

答案 1 :(得分:0)

您的Player构造函数收到一个const char *,而您的m_name成员是char *。将const char *分配给char *将不起作用。

制作构造函数Player :: Player(char * name)。