【发布时间】:2021-03-02 18:14:08
【问题描述】:
如何改进以下代码的结构?
我有一个嵌套类。我想访问可用作全局向量的父类。丑陋的部分是当我将父类的索引存储在子类中时。我能做得更好吗?
vector<A> vec;
struct A
{
int val;
struct B
{
size_t id; // Index of the parent in the global vector. Doesn't look good!
void func()
{
cout << vec[id].val;
}
};
B b;
};
int main()
{
A a;
a.b.id = vec.size() - 1; // Also ugly!
vec.push_back(a);
}
【问题讨论】:
-
如果
B只用作A的成员,我只会使用参考。 -
@super 参考哪里和什么?对向量成员的引用会导致错误,因为向量调整大小会增加其在堆内存空间中的大小。
-
a.b.id = vec.size() - 1; // Also ugly!可能是错误的。考虑size()为零的空情况。 -
@user4581301 好点。但这是出于演示目的。不是主要问题。
-
你很少需要全局变量。如果我们对这些类有更多了解,就更容易提出改进建议。
标签: c++ class oop vector struct