【发布时间】:2013-09-08 06:36:51
【问题描述】:
我正在处理某些类之间具有高多线程的项目,所以我需要访问某个类中的一个值,并且我想使用指针来访问它,所以我所做的基本上如下所述:
我有 3 个课程: 啊哈
class A{
public: int myvalue;
}
在 A.cpp 类中
class A{
A::A(){
myvalue=0;
}
function(){
myvalue++;
}
}
现在我想在一个名为 B 的中间类中访问这个值,因为我可以直接访问它。在 B.h 类中
class B{
public: A *myptr1;
}
在 B.cpp 类中
class B{
B::B(){
myptr1 = new A();
}
Function (){
printf("My value is = %d \n",myptrt1->myvalue);
}
}
当我运行程序时,我的输出是正确的,等于 5。但是,我还需要在第三个类中访问这个值,所以我使用第二个类中的另一个指针来访问它。
我们称之为第三类C,所以在类C.h中
class C {
public: B *myptr2;
}
在 C.cpp 类中
class C{
C::C(){
myptr2 = new B();
}
Function (){
printf("My value is = %d \n",myptr2->myptrt1->myvalue);
}
}
当我运行程序时,我的输出不正确。我得到一些等于零的值,而另一些是负值,所以我认为第二个指针指向错误的内存位置?所以我的问题是如何正确访问这个值。为了简单起见,我尝试编写类似于我的代码的代码,因为代码太大。
提前感谢您的帮助。
【问题讨论】:
-
*mypytr1 = ...错误;删除*。 -
@krsteeve 我的构造函数默认在项目文件中的 cpp 类中声明。我刚刚添加了一个新变量,我需要通过这种方式访问它。
-
@DavidRTribble 这是一个输入错误,我现在将对其进行编辑。对此感到抱歉
-
您发布的代码远不能编译。我们可以为您修复它,但尚不清楚这是否会帮助您在实际代码中找到错误。您需要提出SSCCE 来证明问题。
-
@redRose 我认为您需要考虑使用共享指针。否则跟踪你的对象会很麻烦。
标签: c++ pointers indexoutofboundsexception