无效类型'<unresolved overloaded =“”function =“”type =“”> [int]'对于数组下标 - C ++ </unresolved>

时间:2015-04-16 15:41:21

标签: c++ function vector

当我尝试将数字保存到我的矢量中时,我发现了这个错误...

Invalid types ‘<unresolved overloaded function type>[int]’ for array subscript

代码是:

class Elemento{
private:
    int Nodo;

public:
         Elemento(){};
         ~Elemento(){};
    void SetNumero(int x)    {  Nodo = x;  };
    int  GetNumero()         {  return Nodo; };
};    


class MagicSquare{
private:
    int    N;                             
    int    Possibili_N;                  
    int    Magic_Constant;                

    vector<Elemento> Square(int Possibili_N);    

public:
    MagicSquare()                   {    };
    ~MagicSquare()                  {    };

    void  Set_N(int x)              { N = x; };
    void  Set_PossibiliN(int x)     { Possibili_N = x; };
    void  Set_MagicConstant(int x)  { Magic_Constant = x; };

    . . .

    void SetSquare(int i, int x)    { Square[i].SetNumero(x); }; // got error here
    int  GetSquare(int i)           { return Square[i].GetNumero(); }; // got error here
};

每当我使用Square [i] .method()...

时,我都会收到错误

我调用一个方法来传递Square中的索引以及要放入Elemento->Nodo的值,但是我使用公共方法来访问私有Nodo。与GET相同。我想获得显示它的价值。

3 个答案:

答案 0 :(得分:2)

您似乎已将Square声明为函数,而不是变量。

相反,声明vector<Elemento> Square;并在构造函数中初始化它。

答案 1 :(得分:1)

您将Square声明为函数,而不是变量。因此Square[i]无效 改变

vector<Elemento> Square(int Possibili_N); 

vector<Elemento> Square;

或使用

进行调用
Square(i)

如果它实际上是一个功能。

如果将其更改为变量,则需要确保正确初始化它,最好是在构造函数中。

答案 2 :(得分:1)

您的第vector<Elemento> Square(int Possibili_N);行知道为C++ most vexing parse

而不是按预期声明成员变量,而是声明一个函数接受int并返回一个向量。

相反,在构造函数初始化列表中设置成员向量(和所有其他成员变量):

class MagicSquare{
private:
    int N;
    int Possibili_N;
    int Magic_Constant;
    vector<Elemento> Square;

public:
    MagicSquare( int n, int p, int m ) :
        N( n ),
        Possibili_N( p ),
        Magic_Constant( m ),
        Square( p ) {
    }
...