2013-10-26 3 views
-2

Я хочу создать массив в классе hash и использовать его в своих методах. Я пробовал объявить его в public, но другие методы не могут получить к нему доступ. Вот мой класс декларации:Объявление массива в классе и его использование

class hash 
{ 
    public: 
    string hash_table[size]; //size is global variable; 
    void initialize(int,string*,int); //I pass `hash_table` pointer and two other `int` type //arguments. 
    int hash_function(string, int); 
    void quad_prob(int, int, string* , string); //`hash_table` array is used in this method also. 
    void print(string*); //to print `hash_table` array 

}; 

Я должен использовать только массив. Кроме того, могут ли объяснения, когда я использую hash h; в int main(), что происходит? Вот полный код (без использования структуры классов): http://codepad.org/DQggdoI6

+0

Да, но здесь путем инициализации я делаю некоторую операцию над массивом перед использованием других методов. –

+2

То есть работа конструкторов – rerun

+0

ОК. Я буду копировать код 'initialize' в конструктор. –

ответ

1

Похоже, вы пытаетесь преобразовать существующий код в класс, да? Держите свой string hash_table[] в своем классе. Затем удалите этот параметр из каждой из функций на кодовом коде. Итак, initialize, как указывали люди, становится конструктором hash(int n, int size) и инициализирует hash_table (hash_table = new string[size] или некоторые такие). Аналогично, print становится просто print() и может ссылаться непосредственно на hash_table, так как он является членом функции класса hash.

0

Сначала я бы предложил вам использовать вектор.

Во-вторых, как только вы определили свой класс, вы просто получите его по имени.

class foo 
{ 
public: 
    foo(): vecfoo(5) 
    {} 
    void DoSomeThing() 
    { 
     for_each(begin(vecfoo),end(vecfoo),[](const string &){...}); 
    } 
private: 
    vector<string> vecfoo; 


}; 
+0

_'первый, я бы предложил вам использовать вектор.'_ Он не может быть его домашним заданием ... –

1

Ваш массив будет инициализирован при создании нового объекта хеширования. Вы должны использовать хэш h перед любым кодом с использованием объекта. Когда вы создаете новый объект, ваш конструктор настраивает ваш объект для последующего использования в вашем коде. Оттуда вы сможете использовать свой код из своего класса.

Смежные вопросы