C++ 类名作为向量的对象,参数作为函数的参数,以向后推_
我有这个小程序,因为我试图理解向量和作为参数传递的类名。节目如下:C++ 类名作为向量的对象,参数作为函数的参数,以向后推_,c++,class,vector,C++,Class,Vector,我有这个小程序,因为我试图理解向量和作为参数传递的类名。节目如下: #include<iostream> #include<vector> using namespace std; class objectclass{ public: void vec_try(){ cout<<"print out something"; } }; class another{ public: void run(); vec
#include<iostream>
#include<vector>
using namespace std;
class objectclass{
public:
void vec_try(){
cout<<"print out something";
}
};
class another{
public:
void run();
vector<objectclass *>ports;
void add_obj(objectclass *p){
ports.push_back(p);
}
};
void another::run(){
//int j=0;
ports[j]->vec_try();
}
int main(){
another a;
a.run();
system("pause");
return 0;
}
但是我的函数已经有了定义,而且我想用端口[i]调用函数vec_try(),所以我不知道如何传递值以及如何使用端口[i]。我基本上需要对此进行一些澄清。您的
add_obj
函数获取指向objectclass
对象的指针。因此,要向向量添加元素,需要执行以下操作:
another a;
objectclass obj1; // Create an objectclass
a.add_obj(&obj1); // Pass its address to add_obj
objectclass obj2;
a.add_obj(&obj2);
objectclass obj3;
a.add_obj(&obj3);
当然,向量保持指向这些对象的指针。当这些对象超出范围并被销毁时,这些指针将一直指向无效对象。但这在这里并不重要,因为您的对象只会在main
的末尾被销毁
另一种方法是动态分配对象:
another a;
a.add_obj(new objectclass());
a.add_obj(new objectclass());
a.add_obj(new objectclass());
每行动态分配一个objectclass
对象,然后将指向该对象的指针传递给add_obj
。但是,您需要确保最终以某种方式删除此对象
将推回到向量中的第一个元素的索引为0,第二个元素的索引为1,第三个元素的索引为2,依此类推
如果在run
中,您希望迭代向量中的所有对象,可以执行以下操作:
objectclass *p;
p= new objectclass[10];
for (int i = 0; i < ports.size(); i++) {
ports[i]->vec_try();
}
for(int i=0;ivec_try();
}
如您所见,这将遍历向量中的所有元素(从0到ports.size()
),并对每个元素调用vec\u try
有一种更好的方法可以使用迭代器来实现这一点,但我将把它留到以后的课程中。在第三次阅读这篇文章之后,我不知道你在问什么。我不明白你在问什么。你能澄清一下吗?你想实现什么?我应该在add_obj()中传递什么,因为它不允许像add_obj(objectclass*p)或with&p之类的东西,所以我如何在函数中调用这个我是说参数。我正在尝试像这样调用函数ports[j]->vec_try();但是首先我需要在端口[j]中添加一些东西,我想在端口[j]中添加一些东西。怎样??