【发布时间】:2016-02-25 00:52:22
【问题描述】:
我有一个简单的类,它是来自其他库的 2 个对象的串联:
class MyClass {
public:
Thing1 thing1;
Thing2 thing2;
};
我想要的是能够确保当我浏览一个事物列表并且我想了解相关事物 2 中的某些内容时,我可以获得正确的答案。所以我在 MyClass 中制作了一个向量:
std::vector<MyClass> myClasses;
到目前为止一切顺利。现在我想从thing1s 的向量中填充这个向量的thing1 成员。我能想到的只有:
MyClass someStuff;
for(unsigned i=0; i<thing1Vec.size(); i++) {
someStuff.thing1 = thing1Vec[i];
myClasses.push_back(someStuff);
}
这可行,但对我来说似乎不优雅且非 C++。
我考虑过从 Thing1 和 Thing2 继承,但我必须稍后将实例传递给其他方法。我不知道如何设置允许这样做的类。
我有点 C++ 新手,所以我可能对这个问题的思考完全错了。如果有人对这种事情有更好的代码,我很乐意看到它。
我认为这正是人们使用 Python 的原因。
【问题讨论】:
-
不清楚您如何填充
thing2。是在另一个与thing2Vec大小相同的向量中吗? -
谁在乎呢?关键是我不能只拥有thing1s的向量
-
“我认为这正是人们使用 Python 的原因。”,使用 Python。
-
对不起,但这可能非常重要,因为您要求一个整洁的答案。如果两者是平行向量,那么是一个非常好的解决方案。如果关系不同,则其他解决方案更合适。如果有很多 C++ 经验的人要求您澄清问题中不清楚的部分,那么说“谁在乎”有点粗鲁。
-
我很抱歉——我不是故意粗鲁,只是直截了当。我想你是对的,我错误地思考了这个问题。但我仍然想知道是否有比我在问题中描述的更惯用的方法将类的成员推入该类的向量中的对象。