//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
中调用了析构函数?
答案 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