我想我已陷入某种意义上需要修改“受保护”的情况。我工作过,没有找到合适的解决方案,或者实际上无法解决。
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;
}
非常感谢您的任何评论!
答案 0 :(得分:4)
无法在queue
之外访问A.cpp
。 static
给出变量内部链接,使其在翻译单元外不可见。周期。
答案 1 :(得分:0)
您不能直接从您的代码访问此变量 - 没有“魔术语法”允许这样做。但是有一种方法 - 您可以使用编译器生成的调试信息。通过使用它,您应该能够像调试器一样访问该变量。快速搜索Google后,我找到了libgdb。您可以尝试使用它来访问该变量,或者至少作为示例如何加载和使用调试信息。