我有一个简单的类,它是来自其他库的2个对象的串联:
class MyClass {
public:
Thing1 thing1;
Thing2 thing2;
};
我想要的是能够确保当我浏览thing1s列表并且我想知道关联的东西2时,我能得到正确的答案。所以我在MyClass中创建了一个向量:
std::vector<MyClass> myClasses;
到目前为止一切顺利。现在我想从thing1
的向量中填充此向量的thing1
成员。我能想出的就是:
MyClass someStuff;
for(unsigned i=0; i<thing1Vec.size(); i++) {
someStuff.thing1 = thing1Vec[i];
myClasses.push_back(someStuff);
}
这有效,但对我来说似乎不优雅且非C ++。
我考虑过从Thing1和Thing2继承,但是我必须稍后将实例传递给其他方法。我不知道如何设置允许此类的课程。
我有点像C ++ newb,所以我可能会认为这个问题都错了。如果有人对这类事情有更好的代码,我很乐意看到它。
我认为这正是人们使用Python的原因。
答案 0 :(得分:3)
听起来你想在thing1和thing2之间建立关系。将它们放在同一个类中并不一定是正确的方法
怎么样
std::map<Thing1, Thing2> thingrel;
// create map
thingrel[t1_1] = t2_1;
.....
// lookup later
Thing2 t2_x= thingrel[t1_x];
很难说这是否正确 - 因为你的代码是如此抽象
你需要确保Thing1的地图很好&#39; 。见std::maps with user-defined types as key