gpt4 book ai didi

c++ - 无法访问 vector 类成员

转载 作者:太空狗 更新时间:2023-10-29 23:46:03 25 4
gpt4 key购买 nike

我有这个代码:

W项目.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' 不是类型
  • 在'.'之前请求非聚合类型的成员 token

我不知道哪里出了问题。

最佳答案

  1. this.data是错误的,需要要么是 datathis->data

  2. dataiteminfo 的 vector 和 tempiteminfo *即指针。您不需要使用 new在这里,你应该只创建“在堆栈上”的项目,然后使用 push_back将其拷贝插入到您的 vector 中。

  3. 因为这很可能根本就不是 C 语言,所以不需要 typedef,但更重要的是使用 std::string对于字符串不是 char * .您将在维护这些指针时遇到很多麻烦。

  4. 最好不要使用 item作为类型和成员。这是合法的,但会使您的代码困惑。

  5. 理想情况下 data CItem 的私有(private)成员(顺便说一句,如果您使用类名 itemCItem 只是为了在此处重现您的问题,那很好,但在实际代码中它们是糟糕的类名,请选择更具描述性的名称)。

关于c++ - 无法访问 vector 类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14196823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com