2012-05-12 4 views
-1

このadd関数は、配列に追加する項目となる単一のパラメータをとります。私はforループを使ってみましたが、期待通りに動作しませんでした。私は現在、このようなことをしようとしています:私は配列のadd関数をC++で作成しようとしています

bool homeworklist::add (homework h) 
    { 
    int i = 0; 

    if(current_size < LIST_MAX){ 

     current_size += 1; 

     list[i] = h; 

     ++i; 

     return true; 
    } 
    return false; 
} 

current_sizeは単なるカウンタです。 listは宿題リストクラスに属する配列です リストは宿題を取ります。 この関数は、オブジェクトが正常に追加された場合はtrueを返し、正常に追加されなかった場合はfalseを返します。 、あなたが代入されている

順番に
int i = 0; 

これは、その後のif文で意味:

+0

'リスト[i]は=さh;'最初の要素に上書きされます。 – chris

+1

これは、何が何かを知ることなくほとんど意味をなさない。 –

+0

そうです、そうです。私は、配列の位置が関数が呼び出されるたびに次のavailbleの場所に変わるようにする方法を知らない。 –

答えて

1

変数iが原因この行には、この関数を呼び出すたびに、それが0に初期化されることを意味し、ローカルで要素は最初の場所に毎回です。

current_sizeとどのように宣言したかのように、iをクラスメンバーにすることができます。それとも、自分自身でcurrent_sizeを使うことができるかもしれません。離れ動的memmory割り当てから

+0

それは働いて、ありがとう。病気は次回同様の問題があるときにこれを覚えておいてください。 –

-1
class homework{ 
..... implementation defined 
}; 

class Homeworklist{ 
std::vector<homewok> vhomework; 
Add(homework h) 
{ 
vhomeowrk.push_back(h); 
} 
}; 

滞在

+0

"宿題"が何度も現れているのを見ると、 'std :: vector'というのは疑問です。 – chris

+0

@chris i *あなたのダイナミックなメモリ割り当て*を行っている場合は*に入れますが、idはオブジェクトの存続期間をあまりに説明し、値/参照を渡す必要があります。 – johnathon

関連する問題