【发布时间】:2021-12-20 17:49:07
【问题描述】:
我是 C++ 新手。我创建了一个 cpp 和一个头文件。这是头文件:
class LISCH{
public:
class lisch_entry{
public:
bool valid;
int link;
int data;
lisch_entry(){
valid = false;
}
};
vector<lisch_entry> data_vec;
public:
LISCH(int);
void insert(int);
};
在 cpp 文件中,我需要在插入函数中访问该 data_vec 向量,但我不能这样做,因为这是我第一次用 C++ 编码。这是cpp文件:
#include "lisch.h"
#include <iostream>
using namespace std;
LISCH::LISCH(int table_size){
table_size=10;
int x=5;
}
void LISCH::insert(int new_data){
lisch_entry entry;
int add=new_data%11;
if(LISCH.data_vec[add] == NULL) //here i need to acces data_vec
{
}
data_vec.insert(add,new_data); //and also here
}
我怎样才能做到这一点?我需要检查向量的特定位置是否为空。
【问题讨论】:
-
data_vec.insert应该可以工作。如果没有,请创建一个minimal reproducible example。LISCH.data_vec不会,如果您想明确说明,请使用this->data_vec。 -
什么是
table_size?您只需获取参数,然后将10分配给它 - 然后它就被遗忘了。 -
向量是空的,
data_vec[add]对于add的任何值都会表现出未定义的行为。不确定“检查向量的特定位置是否为空”是什么意思 - 空向量没有位置,并且不清楚lisch_entry的实例为“空”意味着什么。 -
我怀疑您希望构造函数使用
table_size元素构造一个向量,例如LISCH::LISCH(size_t table_size) : data_vec(table_size) {}?此外,余数运算应该是size_t add = new_data % (data_vec.size() + 1);- 但add应该用于什么,我不知道。 -
“我做不到”不是问题描述。如果您遇到任何问题,请在问题中包含编译器错误