指向另一个类中的对象向量的指针
Pointer to Vector of Objects in another Class c++
我准备了一个简化的代码示例来说明我要做的事情。基本上,我有3个类A类B类c类B读取数据并将其存储在一个向量中,其中每个条目都是类A的对象。在类B中,我现在可以完美地处理存储的数据,但我希望能够将数据传递给第三类(或更多类),引用如下:
B B(…);
C和b);
对于B的成员,这可以工作,但如果我试图创建一个指向存储向量的指针,它就会失败。这里重要的一个是向量"v",向量"w"的存在只是因为我想看看整数向量会发生什么(在那里我至少可以使用->at(..)访问它的内容,但通过"int gg(int l) {return w.at(l);}"返回仍然失败)。
#include <iostream>
#include <vector>
using namespace std;
class A
{
string fname;
int id;
public:
A(const string a, int ID):fname(a),id(ID) {}
string rfname() {return fname;}
};
class B
{
vector<A> v;
vector<int> w;
public:
B(const string a, int ID);
vector<A> *rv() {return &v;}
vector<int> *rw() {return &w;}
int gg(int l) {return w.at(l);}
void ggg(){cout << "test test" << endl;}
};
B::B(const string a, int ID)
{
v.push_back(A(a,ID));
w.push_back(ID);
//cout << "test: " << gg(0) << endl;
}
class C
{
B *BB;
vector<int> *u;
vector<A> *aa;
public:
C(B *U);
};
C::C (B *U)
{
BB = U;
BB->ggg();
aa = BB->rv();
u = BB->rw();
cout << "sdfdsfdsf: " << u->at(0) << endl;
cout << "kkkkkk: " << aa->rfname() << endl; //this fails
}
int main()
{
B b("test",24);
vector<int> *ww;
ww = b.rw();
vector<A> *vv;
vv = b.rv();
//cout << ww->gg(0) << endl; //this fails
cout << ww->at(0) << endl;
//cout << vv[0]->rfname() << endl; //this fails
C c(&b);
}
会出现类似
这样的错误'class std::vector<A, std::allocator<A> >' has no member named 'rfname'|
当我尝试aa->rfname()等
我应该注意到,我几周前才重新开始编程,因为我必须分析一些数据,因此我在编码方面不是很有经验。所以我可能错过了一些非常基本的东西,我会感谢相当简单的解决方案。已经搜索了类似的主题,但我仍然无法让它工作。
这就是罪魁祸首:
cout << "kkkkkk: " << aa->rfname() << endl; //this fails
aa
为std::vector<A>*
。->
访问向量中的一个成员。rfname
不是std::vector
的成员函数。
但是这行代码到底是什么意思呢?您是否试图打印向量的全部内容?然后必须遍历vector并打印每个元素:
for (std::vector<A>::iterator iter = aa->begin(); iter != aa->end(); ++iter)
{
cout << "kkkkkk: " << iter->rfname() << endl;
}
代码在很多方面仍然是错误的,不能单独解释每个问题。对于初学者来说,rfname
应该是一个const成员函数,您可能根本不应该使用任何指针。我真的希望你们所有的类,变量和函数都不是这样命名的
相关文章:
- 对象指针在c++中是如何工作的
- C++ 对象指针数组的复制构造函数
- 在对象指针上调用 Delete 是否会递归删除其动态分配的成员
- 什么更好?返回对象指针列表?或返回指向对象列表的指针?
- 正确初始化和销毁对象指针的C++数组?
- 如何深度复制链表对象指针
- 对象指针 c++ 的全局向量错误
- 如何将 c++ 类包装到 python 中,以便我可以使用 pybind11 访问其成员的公共方法(成员是一个对象指针)
- 静态对象指针
- 正在将对象指针数组初始化为NULL
- 如何使用条件表达式返回对象指针?
- std::flush可以用于将对象指针转换为其封闭数组指针吗
- 使用C对象指针构建PyObject*
- 如何在使用对象指针时访问成员函数
- 静态强制转换允许转换对象指针,但不允许转换整数
- C++ abort() 在函数内的抽象类对象指针调用上
- 指向函数的对象指针
- 访问指向对象指针向量的指针的第一个元素?
- 如何将对象/指针正确存储到 Qlist 中
- 对象指针打印结果以相反的顺序进行