-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;in时int main(),会发生什么?这是完整的代码(不使用类结构):http ://codepad.org/DQggdoI6

4

3 回答 3

1

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

于 2013-10-26T17:50:15.127 回答
1

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

于 2013-10-26T17:53:20.453 回答
0

首先,我建议您使用矢量。

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

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


};
于 2013-10-26T17:52:09.183 回答