如何同时处理c++类的多个成员

How to handle multiple members of a C++ class simultaneously?

本文关键字:成员 何同时 处理 c++      更新时间:2023-10-16

我已经习惯了Python,正在努力学习一些c++。在Python中,当我有一个带有"move"函数的类时,我可以简单地将其成员添加到列表中,并像这样遍历列表:

for i in list:
    i.move(n)
那么,在c++中如何方便地完成相应的事情呢?

您可以在c++中通过使用指针或引用来实现相同的操作。

如果你的类是MyClass,你可以声明:

std::vector<MyClass*> list;

然后将您的对象添加到列表中:

list.push_back(&objectOfMyClass); //-- for all of your objects

最后:

std::vector<MyClass*>::iterator itr;
for (itr = list.begin(); itr != list.end(); ++itr) {
   (*itr)->myMethod(...);
}

我使用std::vector是为了简单地分配对象(它会自动增长)并获得迭代器,您应该知道这一点,但如果您愿意,您也可以通过使用普通数组来实现相同的目的。

您可以使用boost foreach

获得python类语法

由于您可能想要使用虚函数,这意味着您的容器中将有不同类型的对象。这意味着你需要一个指针的容器,所以我们再次从boost::ptr_vector (ptr_list的工作方式相同)执行boost。

然后我们可以得到这样一个简单的应用程序:

#include <boost/foreach.hpp>
#include <boost/ptr_container/ptr_vector.hpp>
#define   foreach   BOOST_FOREACH
class MyBase {public: virtual ~MyBase() {} virtual void move(int x) = 0;}
int main()
{
    boost::ptr_vector<MyBase>    data  /*= fillData()*/;
    foreach(MyBase& i, data)
    {
         i.move(4);
    }  
}
//create a vector of int's (basically a container, like an array)
vector<int> v;
//insert item into vector    
v.push_back(12);
//create an iterator that points to the first item in the vector    
vector<int>::iterator iter = v.begin();

// move through the vector from begin() to end(), printing each item to console.    
for (; iter != v.end(); iter++)
{
    std::cout << *iter;
}

Try

list<myobj>::iterator Iterator;
for(Iterator = mydata.begin(); Iterator != mydata.end(); Iterator++)
 {
  (*Iterator).move(n);
 }
相关文章: