如何为指针成员创建对象

How to create objects for pointer members

本文关键字:成员 创建对象 指针      更新时间:2023-10-16
class A{
private:
    Fifi * fifi;
public setFifi(Fifi * aFifi){
    fifi = aFifi;
}
};
int main(){
    Fifi f;
    A a;
    a.setFifi(f);
}

虽然它没有在上面的代码中实现,但class A实际上是一个单例。我想知道的是,我是否仍然能够访问主范围完成的fifi成员。(假设 A 是单例)

或者f对象会丢失,我是否应该使用 new 关键字创建它才能仍然能够访问它?

首先,Fifi f();是一个函数声明

我假设你的意思是:

Fifi f;

在这种情况下,f将在main完成后被销毁

我建议您使用 std::shared_ptrboost::shared_ptr 在堆上构造Fifi并将其存储在A中(如shared_ptr

Fifi f();
A a();

这些陈述没有做我认为你期望他们做的事情。简而言之,它们不会定义变量。

对我来说,class A看起来不像一个单身人士。在当前状态下,在主要完成之后不会保留它的状态(尽管我不确定您希望在main完成后如何访问它)。