クラスの作成に関しては、パブリックデータメンバーはいません。それは問題ありませんが、私は理由を理解していますが、ここに私の問題があります。私はクラスで使用している構造体を持っている(リニアリンクリスト)。私は実際に構造体フィールド(配列)の1つをNULLに初期化して、クライアントが有効な構造体を渡していることを確認できるようにしたいと思います。私はC++が構造体宣言のデフォルト値を設定させないことを理解しています。どうすれば私のゴミをクライアントから守ることができますか?構造体またはクラスとパブリックデータはどうですか?
struct task {
char *description;
char *name;
float time_remaining;
float time_spent;
};
その後、私のクラスで私のような何かをしようとしている:何...
//I am making a copy of "to_add" and storing it in the LLL
int list::add_to_list(const task & to_add)
{ /.../ }
私は、ユーザーがリンクリストに初期化されていない「タスクの」の束を追加する必要はありませんが何をする?その構造体をクラスに変換してデータメンバーをプライベートに移動させると、データメンバーにアクセスしてそれらのコピーを作成しようとする問題が多かったです。私はvarの価値をもたらすために何もしないように非常に注意を払っていましたが、コンパイラから離れて "エラー:" const taskを 'this'の引数 'char * task :: get_comp_name' ()は修飾子を捨てる[-fpermissive] "(" get_comp_name ")は私がコピーを渡すだけで値を編集していないと確信していたゲッターの1つでした)顔に(表情に。
私は理解できません問題。パブリックデータメンバーは、「外部」の世界にとって「興味深い」データにアクセスする唯一の方法は、ゲッターによるものであり、設定が必要な場合は、セッターを経由しなければなりません。インスタンスが作成されると、プライベートメンバーを任意のものに初期化できます。メソッドの引数として外部から渡されたものは、安全ではない可能性がありますが、これは「正常」です。パブリックデータが必要でない場合は、2つの異なる「事実」と思われます。もっと説明できますか? – ShinTakezou
エラーは、関数 'const'を宣言しなかったためです。公共のデータではなくアクセサーを提供したいなら、getterは 'char const * get_comp_name()const;'のようなものでなければなりません。 –