通过指针访问结构数组

Accessing a structure array through a pointer

本文关键字:结构 数组 访问 指针      更新时间:2023-10-16

我有一个类,它的位置有一个结构:

class thing
{
    void setCoOrds(int, int, int);
    string name;
    struct location
    {
        int x;
        int y;
        int z;
    } coOrd;
};

然后在一个函数中,我创建了一个类型thing的数组。

int main()
{
    thing * p_myThings = new thing[5];
    // call array element here to use setCoOrds()
    delete p_myThings;
    return 0; 
}

从主函数中,我如何访问thing元素[3],以便使用它的.setCoOrds()函数?

应该是:

p_myThings[3].setCoOrds

还有

setCoOrds

默认情况下是私有的,这将不允许您调用该函数。

int main()
{
    thing * p_myThings = new thing[5];
    p_myThings[3].setCoOrds(42,21,0);
    delete[] p_myThings; // use delete[] for arrays btw
    return 0; 
}

我假设成员函数

void setCoOrds(int, int, int);

具有公共访问控制。在这种情况下,您可以使用以下结构

p_myThings[3].setCoOrds( x, y, z );

( *( p_myThings + 3 ) ).setCoOrds( x, y, z );

( p_myThings + 3 )->setCoOrds( x, y, z );

您应该使用:

p_myThings[3].setCoOrds(x, y, z);

对于删除指针数组,您应该使用delete[]而不是delete