访问一些在.cpp中定义的静态变量,同时其类类型也在.cpp中定义

时间:2016-06-15 17:20:27

标签: c++ c

我想我已陷入某种意义上需要修改“受保护”的情况。我工作过,没有找到合适的解决方案,或者实际上无法解决。

A.H

class A
{
    static void append(int x);
}

A.cpp

class B;
static B *queue = 0;

class B
{
    friend class A;

    int value;
    B* next;

    B(int x)
    {
        value = x;
        next = queue;
        queue = this;
    }
}

void A::append(int x)
{
  new B(x);
}

我想要做的是基本上找到一种方法在另一个源文件中外部操作队列而不更改A.h和A.cpp,因为类A和B不提供操作队列的方法。

C.cpp

#include "A.h"

<whatever magic declaration>

void C()
{
    queue = 0;
}

非常感谢您的任何评论!

2 个答案:

答案 0 :(得分:4)

无法queue之外访问A.cppstatic给出变量内部链接,使其在翻译单元外不可见。周期。

答案 1 :(得分:0)

您不能直接从您的代码访问此变量 - 没有“魔术语法”允许这样做。但是有一种方法 - 您可以使用编译器生成的调试信息。通过使用它,您应该能够像调试器一样访问该变量。快速搜索Google后,我找到了libgdb。您可以尝试使用它来访问该变量,或者至少作为示例如何加载和使用调试信息。