我想在类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 :(得分:1)
看起来您正在尝试将现有代码转换为类,是吗?让您的string hash_table[]
在课堂上保密。然后从键盘上的每个函数中删除该参数。因此,正如人们所指出的那样,initialize
成为构造函数hash(int n, int size)
并初始化hash_table
(hash_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;
};