c++ - 给定一个类(class)成员,我如何访问同一类(class)的其他成员?

标签 c++ class oop inheritance member

我有两个类,我称它们为“foo”和“bar”。 “foo”有两个公共(public)成员:(一个表示其名称的字符串和一个“bar”类型的 vector )。

class bar {
    //not important
};

class foo {
public:
    std::string fooName;
    std::vector<bar> bars;
}

如果我有一个 bars 元素,我如何访问和打印它对应的 fooName?我正在考虑这些方面的事情,但我不知道如何填写空白:

std::cout << bars[index].__________.fooName;

当我尝试用谷歌搜索答案时,我只能找到询问有关访问其他类的私有(private)成员的问题。

最佳答案

所以我不太确定这是否是您想要的,但是如果您的 foo 对象包含 bar 对象的集合,那么您应该知道哪个 foo 要打印的对象名称。

struct Bar
{ std::string name; };

struct Foo
{
    Foo( std::string fooName ) 
        : name{ std::move( fooName ) } { }

    void AddBar( Bar bar ) 
    { bars.push_back( std::move( bar ) ); }

    bool Contains( std::string_view barName ) const
    {
        return ( std::find_if( std::begin( bars ), std::end( bars ), 
            [ &barName ]( const Bar& bar ) { 

                return bar.name.compare( barName ) == 0; 
            }) != std::end( bars ) );
    }

    std::string name;
    std::vector<Bar> bars;
};

int main( )
{
    Foo foo{ "North America" };
    foo.AddBar( { "New York" } );
    foo.AddBar( { "LA" } );
    foo.AddBar( { "Toronto" } );
    foo.AddBar( { "Seattle" } );
    foo.AddBar( { "BC" } );
    foo.AddBar( { "Winnipeg" } );

    // Check if a single foo instance contains the city.
    if ( foo.Contains( "Toronto" ) )
        std::cout << "City: Toronto Continent: " << foo.name << '\n'; 

    Foo foo2{ "South America" };
    foo2.AddBar( { "Lima" } );
    foo2.AddBar( { "Santiago" } );
    foo2.AddBar( { "Salvador" } );
    foo2.AddBar( { "Fortaleza" } );
    foo2.AddBar( { "Quito" } );

    std::vector<Foo> foos{ std::move( foo ), std::move( foo2 ) };

    // Check if any foo instance contains a specific city.
    const std::string cityName{ "Toronto" };

    auto it{ std::find_if( std::begin( foos ), std::end( foos ), 
        [ &cityName ]( const Foo& foo ) { return foo.Contains( cityName ); } ) };

    if ( it != std::end( foos ) )
        std::cout << "Continent: " << it->name << '\n';
}

关于c++ - 给定一个类(class)成员,我如何访问同一类(class)的其他成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61993800/

相关文章:

c# - 抑制 HTTP_X_FORWARDED_FOR http header ,c# .net C++

c++ - 在 C++ 中使用带 vector 的对象有更好或更正确的方法吗?

java - 封装常见的异常处理逻辑

c++ - 在无效索引处访问 TArray 是否安全?

c++ - 无论如何有一个 valgrind 消息 "Conditional jump or move depends on uninitialized value"可以是所谓的 'false positive'

python - 如何确定实例方法对应的类?

c++ - Visual Studio,C++,在另一个 DLL 导出类中使用 DLL 导出类

oop - 面向对象分析与现实生活中的 OOP 差异

多态性的 C++ 问题 - 数据被覆盖

c++ - 重新定义 "new"运算符的目的是什么?