无法访问向量类成员
Can't access vector class members
我有这样的代码:
WItem.h
#include <vector>
#include <string>
typedef struct iteminfo {
int rowid;
char* item;
int type;
int extra;
int objectid;
} item;
class CItem {
public:
void push(int rowid, char* item, int type, int extra, int objectid);
std::vector<iteminfo> data;
};
WItem.cpp
#include "witem.h"
void CItem::push(int rowid, char* item, int type, int extra, int objectid) {
iteminfo* temp = new iteminfo;
temp->rowid = rowid;
temp->item = item;
temp->type = type;
temp->extra = extra;
temp->objectid = objectid;
this.data.push_back(temp);
}
我得到这些错误:
- ' data'不是类型
- 请求非聚合类型的成员。令牌
我不知道怎么回事
-
this.data
是错误的,需要data
或this->data
-
data
是iteminfo
的向量,temp
是iteminfo *
的指针。你不需要在这里使用new
,你应该只创建项目"在堆栈上",然后使用push_back
将它的副本插入到你的向量中。 -
因为这可能根本不是C语言,所以不需要类型定义,但更重要的是,对于字符串使用
std::string
而不是char *
。维护这些指针会造成很多麻烦。 -
最好不要同时使用
item
作为类型和成员。 -
理想情况下使
data
成为CItem
的私有成员(顺便说一下,如果您使用类名item
和CItem
只是为了重现您的问题,这很好,但在实际代码中它们是糟糕的类名,请选择更具描述性的东西)。
this.data
应该是this->data
,因为this
是c++中的指针
CashCow对这些错误做了很好的分析。另外,我想指出
-
push的类型应该是
iteminfo
,参数列表比较乱 -
iteminfo
应该有一个构造函数iteminfo(int rowid, char* item, int type, int extra, int objectid);
也考虑使成员私有,以保护他们免受全球滥用
如果你的代码示例是完整的,你认识到类CItem
是过时的,可以被std::vector<iteminfo>
(或一个typedef)所取代
相关文章:
- C++:从其他类访问结构的私有成员向量
- 访问类成员向量最后一项的正确方法
- 将字符串推送到私有成员向量
- 访问其他类中多个对象的私有成员向量
- 如何在类的构造函数中定义成员向量的大小
- 如何对类成员向量进行排序
- 从向量中擦除元素是否也会擦除元素中存在的所有成员向量
- 尝试从成员函数推送时不维护元素的成员向量
- C++ |无法将项添加到类成员向量
- 如何创建过滤流的成员向量
- 使用大型数据集初始化类成员向量的最有效方法
- 将C 成员向量包裹为Python命令
- 尝试保存到成员向量的连接-一次只保存一个
- 类成员向量上的迭代器未正确取消引用
- 如何在c++11中返回类成员向量
- 初始化构造函数C++中的成员向量
- 将类成员向量的内容复制到另一个向量中,然后将其交换回
- 推送到成员向量时的隔离错误
- 在堆上创建多态对象的数据成员向量
- 将此指针推回专用静态成员向量