从另一个类中访问私有数据成员
Access private data members from within another class
我有一个播放器类。在课堂上,我有一只三号的手,是卡片型的。卡是另一类。我试图通过类访问hand的私有数据成员,但在播放器类内部。这是我得到的错误:
scat.cpp: In member function ‘void player::setHand(card*)’:
scat.cpp:117:10: error: request for member ‘cardCopy’ in
‘((player*)this)->player::hand’, which is of pointer
type ‘card*’ (maybe you meant to use ‘->’ ?)hand.cardCopy(c);
#include <iostream>
using namespace std;
class card{
char *suit;
char *rank;
int cvalue;
char *location;
public:
card::cardCopy(card *c);
};
class player{
card *hand;
public:
player::setHand(card *c);
};
void card::cardCopy(card *c)
{
strcopy(rank, (*c).rank);
strcopy(suit, (*c).suit);
strcopy(location, (*c).location);
cvalue = (*c).cvalue;
}
player::player()
{
name = new char[20];
hand = new card[3];
}
void player::setHand(card*c)
{
hand.cardCopy(c);
}
我不明白为什么我不能访问功能卡像这样复制。。手是一种卡片类型!!!
因为你的"手"是一个指针,所以你必须使用->运算符来访问成员变量和函数
class player{
card *hand // member pointer of card type
}
void player::setHand(card *c)
{
hand->cardCopy(c);
}
好吧,我可以看到你的代码有几个问题:
-
在类声明中,您声明的函数没有指定返回类型。
-
*手上没有类型公告
-
手是指针,因此需要使用->操作员访问其成员。
-
手被初始化为构造函数中长度为3的数组,但您没有指定您试图访问的元素。
试试这个:
#include <iostream>
#define strcopy(a,b) *a=*b
using namespace std;
class card
{
private:
char *suit;
char *rank;
int cvalue;
char *location;
public:
void cardCopy(card *c);
};
class player
{
private:
char *name;
card *hand;
public:
player();
void setHand(card *c);
};
void card::cardCopy(card *c)
{
strcopy(rank, c->rank);
strcopy(suit, c->suit);
strcopy(location, c->location);
cvalue = c->cvalue;
}
player::player()
{
name = new char[20];
hand = new card[3];
}
void player::setHand(card*c)
{
hand[0].cardCopy(c);
}
当然,您还需要在这个范围内提供strcopy()的实现,这样才能工作。为了方便起见,我提供了一个,但我不能确定我的实现是否会完全按照您的意愿进行。
相关文章:
- 用于访问容器<T>数据成员的正确 API
- 使用指针访问数组中的对象数据成员
- 友元函数无法访问私有数据成员 (c++)
- 在类 A 中创建类型为 B 类的向量 - 访问数据 [C++] [成员在两个类中都是私有的]
- 访问数据成员(本身是对象)的数据成员,就好像它们是类成员一样
- 使公共数据成员在C++中无法访问
- 有没有办法在C++中循环访问对象的不同数据成员
- 为什么类成员数据必须是静态的才能被模板化类的模板化结构成员访问
- 如何在C++中使用类对象访问指针数据成员
- 通过指针算法访问结构数据成员
- 是否可以访问类数据成员并在析构函数中对它们执行操作?
- 如何在 c++ 中访问类的私有数据成员
- 现代C++编译器是否优化了对类中同一数据成员的重复访问?
- 无法访问派生类函数内的基类的受保护数据成员
- 从私有结构数据成员访问类公共成员函数C++
- 有关C++/组件数据布局、数据成员访问、方法的一般问题
- C++ 共享库不允许静态数据成员访问
- 私人数据成员访问
- OpenCV Mat数据成员访问
- 数据成员访问歧义和菱形继承