« C4D 被写界深度…の様な「後ボケ」 | トップページ | C4D ChannelShader »

C4D C.O.F.F.E.E.クラスの様な…構造体

クラスは、データとデータを処理する関数が1つになったもの…ですよね。
クラスは、データや処理する関数をメンバと言い、そのメンバのアクセスをコントロールができますね。

似たような物に構造体:structがあります。
アクセス制限は無く、全てがpublicで、データや関数を入れ込む事ができます。

では、具体的に何が違うのか…
自分には、わかりません…
アクセス権の制御ができるぐらいの違いだけ…
だから、実際にどの様に使い分けるのか、よくわかりません…

とりあえず…

//struct -----------------------------------------------------------
//構造体:struct

struct testStruct
{
  var testP;
  var testF;

  testStruct();
  AddPF();
}

//コンストラクタ
testStruct::testStruct()
{
  testP = vector(0.0);
  testF = 0.0;
}

testStruct::AddPF()
{
  return vector(testP.x + testF , testP.y + testF , testP.z + testF);
}



//main -------------------------------------------------------------
main(doc , op)
{
  var A = new(testStruct);
  A->testP.x = 10.0;
  A->testF = 52.0;

  println(A->AddPF());
}

クラスが解るのであれば、上のコードを理解するには全く問題が無いことでしょう…

[62.000000,52.000000,52.000000]

構造体には、アクセス制限が無いため、作成時にはtestPをベクトルを想定して作っていますが…
使用時に、間違ってベクトル型以外のものを入れてしまう恐れがありますね。
そうすると、main()関数内でベクトルのx成分にアクセスするとエラーが出る可能性がありますね。

ま、こんな使い方をする時はクラスを使うのでしょうけど…

|

« C4D 被写界深度…の様な「後ボケ」 | トップページ | C4D ChannelShader »