当我尝试将数字保存到我的矢量中时,我发现了这个错误...
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相同。我想获得显示它的价值。
答案 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 ) {
}
...