如何同时处理c++类的多个成员
How to handle multiple members of a C++ class simultaneously?
我已经习惯了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);
}
相关文章:
- 是否可以同时声明一个类成员的常量/非常量?
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- 为什么std::atomic中的所有成员函数都同时出现在有volatile和没有volatile的情况下
- C++11 默认类成员初始化与初始值设定项列表同时
- Opencv 时刻没有成员命名 m00,同时试图确定轮廓的中心
- 编译问题 C++ 同时,尝试通过调用另一个对象中的成员函数来创建 std:: 线程
- 同时处理非成员函数指针和成员函数指针
- 为什么比较和交换操作同时存在免费函数和成员函数?
- 如何在保持多态性的同时,将成员函数添加到需要它的继承类中,而不会影响其他同级类?
- 同时使用汽车和汽车修理工类,似乎无法更改对象的成员?
- 指向成员函数的指针与指向数据成员的指针有何不同
- C++-填充派生类数据成员,同时设置基类属性值
- 从矢量中删除重复的成员,同时保持顺序
- 可视化 当基类和子类具有相同的对象名称但类型不同时,如何访问子类的数据成员。在C++
- 当传入的成员变量和参数的名称相同时,是否存在未定义的行为?
- 处理指向模板中成员的指针,同时创建用于asio的更简单的' bind '
- 当模板类型的行为相同时,定义模板化类的成员函数的正确方法是什么?
- 当仅与少数成员不同时,有必要对整个类进行专门化吗?
- 如何同时处理c++类的多个成员
- 函数同时接受指向成员函数的指针和指向const成员函数的指针