首页 > 解决方案 > c++ 中具有类和向量变量的函数

问题描述

我有一个名为 Party 的类,其中包含一个名为 player 的私有变量,它是向量类型,sting。

class Party
{
    vector <string> players;

    public: 
    Party (string party_name, string boss)  {}; 
    ~Party() {};        

    vector<string> getNames() { return players; };

    void setNames (const vector<string> &new_players) { players=new_players; }

}

我想编写一个朋友函数,它将显示变量 P(以及具有“名称”变量为私有的类)是否是党的一方。

void part_of_party (Party &party, P name)
{   
    bool found=false;

    for (int i=0; ( found==false && i<party.name.size() ); ++i)
    {
        if ( (party.name[i]).compare(name.getName()) == 0)
        {
            found==true;
        };
    }

    if (found==true) { /// }
    else { //// }
}

编译器没有显示任何错误,但屏幕上没有显示任何消息(如预期的那样)。

你有什么主意吗?谢谢你。

标签: c++functionfor-loopif-statementvector

解决方案


我猜问题是这个

found==true;

应该是

found=true;

通常新手会反过来弄错,=他们应该在应该使用的时候使用==,但是==当你应该使用=(分配)时你已经使用了(平等)。你的编译器应该已经警告你了。注意编译器警告,它将为您节省大量时间和挫败感。

另外,不是错误,而是

if (party.name[i] == name.getName())

是一种更明显的写法

if ( (party.name[i]).compare(name.getName()) == 0)

推荐阅读