我有一个该类(obj
)的数组作为类成员,我想创建Box
类(这是包含类)的数组,并通过该Box
类的p
指针对象成员访问xyz obj[5];
。
obj
数组是private但我想我可以用指针访问它。我说的对吗?
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
class xyz{
public:
int x;
};
class Box {
public:
// Constructor definition
Box ()
{
cout<<"without constructot"<<endl;
}
xyz *p=obj;
private:
xyz obj[5];
};
int main()
{
Box b[5];;
Box *p=&b[0];
(b+2)->(obj)->x=5;
//cout <<(b+2)->(obj)->x<<endl;
}
(b+2)->(obj)->x=5;
异常
error: expected unqualified-id before ‘(’ token
28 | (b+2)->(obj)->x=5;
| ^
main.cpp:28:10: error: ‘obj’ was not declared in this scope 28 | (b+2)->(obj)->x=5;
| ^~~
您的代码中存在许多问题。首先,我不确定您想要使用obj
周围的括号来完成什么,但是成员访问操作符(->
)不是这样工作的-它必须在之后立即与成员的名称。
也许你想要的是这样的东西:( (b + 2)->obj )->x = 5;
?然而,在这样的表达式中,外部括号是不必要的,因为->
具有从左到右的结合性(尽管为了清晰起见,您可以使用它)。
private
,那么只能从类的成员函数(或友元函数)内部访问它。
作为最后的观察:我不知道为什么你使用(b + 2)
,当你可以使用b[2]
。你的意思是使用指针(p
),在前一行分配b[0]
的地址(如(p + 2)->obj->x = 5;
)?
作为脚注,我强烈建议您阅读以下Stack Overflow帖子:
- 为什么我不应该#include ?
- 为什么使用命名空间std;"被认为是不好的做法?