簡體   English   中英

如何在 C++ 中從屬於該類的函數訪問該類中的向量

[英]how to access to a vector in the class from a function that belongs to that class in C++

我是 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

}

我怎樣才能做到這一點? 我需要檢查向量的特定位置是否為空。

代碼有很多問題,可能是由於缺乏計划或制定所需的效果。

using namespace std;  // never do this in real programs. 
                      // Even some tests may fail accidently. 

LISCH::LISCH(int table_size){
   table_size=10;  // those are local variables, why assigning values to them?
   int x=5;    
}

data_vec被定義為lisch_entry的向量:

   vector<lisch_entry> data_vec;

您突然訪問帶有索引add lisch_entry類型的元素。 你已經分配了那么多元素嗎? 它可能根本不存在,程序會崩潰:

   if(LISCH.data_vec[add] == NULL) 

實例lisch_entry不能相等,不能與您定義的 NULL 進行比較。 支票本身看起來很可疑,你想做什么?

  data_vec.insert(add,new_data);

insert接收一個迭代器作為第一個參數。 整數值不是迭代器。 看起來必須檢查std::vector上的文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM