我需要访问名为name的c字符串。 name是名为Data的类的一部分。在一个单独的类中有一个结构数组,结构包含Data对象。我擅长指针,似乎无法弄清楚如何访问名称。这里有一些代码要澄清。显然我还有很多工作要做,但我希望在完成实现之前找到解决这个问题的方法。
bool BST::retrieve(const char *key, Data const *& data) const
{
int rIndex = 0;
if (strcmp(items[rIndex]->data.name, key) == 0)
return false;
}
在BST
private:
struct Item
{
Data data;
bool isEmpty = true;
}
Item *items; //initialized in constructor to be size of a capacity argument
在数据中
private:
char * name;
strcmp的第一个参数是我遇到问题的地方。谢谢你的帮助。对不起,如果问题不够明确。
答案 0 :(得分:2)
您应该使用.
运营商代替Item
运营商。
->
是items
个对象的数组。当您使用Item
运算符取消引用它时,您获得的是引用,而不是指针。
所以试试
[]
答案 1 :(得分:2)
Data :: name是私有的,因此已经被指出将无法访问。
要解决此问题,您需要向Data类添加公共访问器方法
class Data
{
public:
char const* getName() const
{
return name;
}
...
}
然后你的调用代码看起来像这样
if (strcmp(items[rIndex].data.getName(), key) == 0)