C++嵌套类问题

C++ nested classes issue

本文关键字:问题 嵌套 C++      更新时间:2023-10-16

我在C++和嵌套类方面遇到了一些问题。例如:

在主要.cpp

int main()
{
B b(par);
cout << b.Aglobal->parametro;
cout << b.Aglobal->parametro;
return 0;}

在B.cpp

B: B(type par)
{
A a(par1,par2);
Aglobal=&a;}

在波黑

class B
{
public:
    B(type);
    A *Aglobal;}

在 A.h

class A
{
public:
    A(type1,type2);
    int parametro;}

主要的回声是不同的.cpp我无法理解原因。

在 B 的构造函数中定义类型 A 的局部变量,并返回指向该局部变量的指针。使用该指针会导致未定义的行为,因为它指向的对象不再存在。

该问题的解决方案可能包括:

  • 在堆上分配 A 对象。但是,请尝试将其包装在适当的智能指针中,而不是简单的指针中。

  • 在 B 中具有类型 A 的成员并返回成员的地址

  • 具有
  • 具有静态存储持续时间的 A 类型的对象,例如指针本身。

这三者之间的决定在很大程度上取决于你的问题的背景,这是无法从你的问题中推断出来的。

还有一件事。嵌套类是在另一个类的作用域中定义的类。您的示例中没有嵌套类。

在 B 构造函数中,您正在保存局部变量的地址。 有几种方法可以解决此问题,正确的方法取决于您尝试对 A 执行的操作。

此外,您没有嵌套类。 嵌套类在另一个类中定义,如下所示:

class OuterClass {
    class InnerClass {
        //class members
    };
    //class members
};