-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

4

3 に答える 3

1

新しいハッシュ オブジェクトを作成すると、配列が初期化されます。オブジェクトを使用するコードの前にハッシュ h を使用します。新しいオブジェクトを作成すると、コンストラクターは後でコードで使用できるようにオブジェクトを設定します。そこから、クラスのコードを使用できるはずです。

于 2013-10-26T17:53:20.453 に答える
1

既存のコードをクラスに変換しようとしているようですね。string hash_table[]クラスではプライベートを守りましょう。次に、codepad の各関数からそのパラメーターを削除します。したがってinitialize、人々が指摘したように、コンストラクターにhash(int n, int size)なり、初期化しますhash_tablehash_table = new string[size]またはそのようなもの)。同様に、クラスのメンバー関数なのでそのまま参照できますprintprint()hash_tablehash

于 2013-10-26T17:50:15.127 に答える
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 に答える