推荐的方法使对象的成员变量可以被其他类访问?

时间:2014-12-10 03:37:19

标签: c++ object

//Foo.h

class Foo
{
public:
    SomeApiType ApiObj;
};

//Foo.cpp

Foo::Foo()
{
    ApiObj = SomeApiFunction();
}

Foo::~Foo()
{
    ApiFreeObj(ApiObj);
}

//main.cpp

int main()
{
    Foo foo;
    // various code
    return 0;
}

那么使foo.ApiObj可以被其他类访问的推荐方法是什么?

//Bar.cpp
Bar::Bar()
{
    BarMember = OtherApiFunction(foo.ApiOjb); // make it accessible here
}

如果Foo foo是全局的,那么它是有效的,但我不喜欢这种方式。

如果它是全局的,它是否在return 0中调用了析构函数?

2 个答案:

答案 0 :(得分:2)

嗯,将引用传递给Foo

Bar::Bar([const] Foo& foo) {
      // ^^^^^^^   really depends on your case
    BarMember = OtherApiFunction(foo.ApiOjb); // make it accessible here
}

答案 1 :(得分:0)

您可以使用继承。在这种情况下,您继承了从基类到派生类

的一些特性
class Bar : private Foo
{
    // BarMembers
}

//Bar.cpp
Bar::Bar()
{
    BarMember = OtherApiFunction(foo.ApiOjb); // make it accessible here
}

我使用了私有(访问说明符),以便从 Foo 私有中创建公开成员 >在班级

您也可以使用其他访问说明符。

有关继承的更多信息:http://www.tutorialspoint.com/cplusplus/cpp_inheritance.htm