是否可以从创建它的main()外部访问公共类成员?

时间:2019-05-11 02:14:48

标签: c++ class access

我是C ++的新手,今天我正尝试使访问成为main()外部的公共类成员,更确切地说是在另一个函数中。

我试图创建指向该类的指针,但是无法访问其成员。我将展示一个包含几行代码的示例,希望能对您有所帮助。

Class City
{
private:
    string name;

public:
    string getName()
    {
        return name; 
    }
};

bool isCity(string input)
{
    if(input== ???) { return true; } 
    return false; 
}

*问题:如何从我在main()中创建的类中的问号访问公共成员getName()

int main()
{

    string input;
    City test;

    cin >> input;

    isCity(input);

    cin.get();
}

指向Class的指针不起作用,引用传递也不起作用。

1 个答案:

答案 0 :(得分:2)

最简单的方法是将isCity作为类的一部分,并将其作为对象test.isCity(input);的方法来调用

该类应如下:

Class City
{
private:
    std::string name;

public:
    std::string getName() const
    {
        return name; 
    }

    bool isCity(const std::string& input) const
    {
        return input.compare(name) == 0
    }
};

否则,您可以拥有一个自由函数(在类外部),但是签名应提供类city对象,如下所示:

bool isCity(const City& c, const std::string& input)
{
    return input.compare(c.GetName()) == 0;
}

这意味着您必须按以下方式调用该函数:

isCity(test, input);