指针混乱

时间:2014-12-08 22:34:21

标签: c++ oop pointers

我需要访问名为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的第一个参数是我遇到问题的地方。谢谢你的帮助。对不起,如果问题不够明确。

2 个答案:

答案 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)