【发布时间】:2026-01-11 08:35:02
【问题描述】:
我正试图弄清楚我怎么能或者为什么我不能访问这个类的成员。首先我会告诉你什么是有效的,这样你就知道我在想什么,然后我会告诉你我似乎做不到的。
我能做的是:我有一个有成员的班级。我制作了该类的指针数组并制作了它的新部分(通过循环),这很好。我还可以使用类似的数组创建另一个类,甚至创建新的实例并初始化它们,但是当我尝试访问它们时,我遇到了问题。
这段代码几乎可以正常工作:
#include <iostream>
using namespace std;
class testClass{
public:
int number;
};
class testPoint{
public:
testClass testInstance;
testClass *testclassArray[5];
void makeArray();
void setToI();
};
void testPoint::makeArray(){
for (int i = 0; i < 5; i++){
testclassArray[i] = new testClass;
}
}
void testPoint::setToI(){
for (int i = 0; i < 5; i++){
(*testclassArray[i]).number = i;
}
}
int main(void){
testPoint firstTestPoint;
firstTestPoint.makeArray();
firstTestPoint.setToI();
// EXCEPT FOR THIS LINE this is where I have problems
cout << firstTestPoint.(*testclassArray[0]).number << endl;
return 0;
}
我知道这应该有效,因为它有效
int main(void){
testPoint firstInstance;
firstInstance.testInstance.number = 3;
cout << firstInstance.testInstance.number << endl;
// and this works
return 0;
}
这行得通
int main(void){
testClass *testPointer[5];
for (int i = 0; i < 5; i++){
testPointer[i] = new testClass;
(*testPointer[i]).number = i;
}
cout << (*testPointer[0]).number << endl;
return 0;
}
那么为什么我不能以同样的方式访问 cout 函数上的成员呢?
【问题讨论】:
标签: c++ arrays class pointers dereference