【发布时间】:2015-05-22 12:47:08
【问题描述】:
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有定义。
【问题讨论】:
-
最后一行 a 假设为 x。
-
load应该是U的方法吗?
-
load()可以像public: void load() { ... }一样内联(即在类内部)声明,或者您必须将类名称添加到函数名称前,例如void U::load() { ... }。x未初始化。最后c为空(当您尝试访问其成员时会导致段错误)。 -
@James - 首先像其他人提到的那样编辑代码。 x 的初始值是多少?在访问它之前,您需要将一些 C 实例添加到向量中。
-
对不起,我在上面的代码中犯了一个错误。最后一行必须定义为类 U 方法,作为一个有两个参数的函数;一个索引(因为我想访问所有向量的元素)并且该值将被保留。另一点是,通过这个过程,我想更改 C 类字段之一的值
标签: c++