class C {
public: void c_set(int x){ a = x; }
private: int a;
}
;
class U {
public: void load();
c_loader(int i, int x){ c[i].c_set(x); };
private: vector<C> c(20);
}
;
void U::load() {
int x;
cin >> x >> i;
c_loader(i, x)
}
我真的很困惑这个。我需要在另一个中调用成员函数,但我的问题是内部类是该类的向量。我的代码应该可以工作,但结果是段错误。假设函数cget
有定义。
答案 0 :(得分:1)
问题有点不清楚,但试着这样做以防止段错误。
class C {
public: void cget(int a);
private: int a;
};
class U {
public: void load();
vector<C> c; // Note: c is made public in order to add elements from main
};
void U::load(unsigned x, int a) {
if (x < c.size()) // Check the size of c _before_ access
{
c[x].cget(a);
}
}
void main()
{
U u;
C c;
u.c.push_back(c);
u.load(0, 3); // Will end up calling cget
u.load(1, 3); // Will just return without calling cget
}
编辑: 只是想提一下,问题中的代码已经改变了很多我的答案。这解释了为什么我的代码看起来很不一样;-) 在任何情况下,答案仍然是:在访问之前检查c的大小。