如何使用对象数组访问类中的变量?

时间:2018-05-27 04:11:52

标签: c++ pointers

我是指针的新手,我在访问类中的变量时遇到了麻烦。

我想在国际象棋游戏中创建一个可能的移动数据库,我认为使用指针是要走的路,因为我不会浪费内存并防止任何不必要的内存错误。

的main.cpp

#include <iostream>
#include "moves.h"

using namespace std;

int main()
{
    moves* possibleMoves[100];
    &(possibleMoves[0]->piece) = 100;
    cout << *&possibleMoves[0]->piece << endl;
    return 0;
}

moves.h

#ifndef MOVES_H
#define MOVES_H


class moves
{
public:
    moves();
    int piece;
    int X;
    int Y;
    int addX;
    int addY;
    int score;
};

#endif // MOVES_H

任何帮助将不胜感激。非常感谢你提前。

目前它没有输出任何内容,我也不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

  

我在访问类

中的变量时遇到了麻烦

看起来你正在制作一堆乱七八糟的指针和参考文献。

您的代码中并没有真正需要使用指针数组。而是使用正常的对象数组。

LoginPopup

顺便说一下,类moves possibleMoves[100]; possibleMoves[0].piece = 100; cout << possibleMoves[0].piece << endl; 错误地将所有数据成员公开给公众 - 它们应该是私有的。并且需要实现moves构造函数,否则应删除它以使用默认构造函数。

答案 1 :(得分:0)

您正在创建一个指针数组:

   moves* possibleMoves[100];

当你想要的是一个moves的数组。

然后,您尝试将piece possibleMoves[0]的值100分配给 &(possibleMoves[0]->piece) = 100;

&

但实际上你正在做一些完全不同的事情。正如@Henri Menke所说,最好阅读*.->int main() { moves possibleMoves[100]; possibleMoves[0].piece = 100; cout << possibleMoves[0].piece << endl; return 0; }

要使您的代码正常工作,请尝试:

moves

在这里创建一个piece个对象数组,然后在对象0中为cout赋值为100.您可以检索该值并将其打印到@NSManaged