在类中声明数组并使用它

时间:2013-10-26 17:45:43

标签: c++ arrays class

我想在类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

3 个答案:

答案 0 :(得分:1)

看起来您正在尝试将现有代码转换为类,是吗?让您的string hash_table[]在课堂上保密。然后从键盘上的每个函数中删除该参数。因此,正如人们所指出的那样,initialize成为构造函数hash(int n, int size)并初始化hash_tablehash_table = new string[size]或其他一些内容)。同样,print变为普通print(),并且可以直接引用hash_table,因为它是hash类的成员函数。

答案 1 :(得分:1)

在创建新的哈希对象时,将初始化您的数组。您可以在使用该对象的任何代码之前使用哈希h。创建新对象时,构造函数会设置对象以供以后在代码中使用。从那里你应该能够使用你班上的代码。

答案 2 :(得分:0)

首先我建议你使用矢量。

其次,一旦在您的班级中定义,您只需按名称访问它。

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


};