Re: アロー演算子のエラー ( No.1 ) |
- 名前:TNT 日時:2008/01/08 00:10
まず、SPos pPosは構造体へのポインタであるので、使用するには構造体の実体が必要です。
例えば
SPos sp;
SPos *pPos;
pPos = &sp;
といった具合に、ポインタは実体を得なければ使用できません。
(というより、上の例は初期化されていないポインタを使っており危険です)
この場合ではSPosをポインタにする必要はありません。代わりに実体として定義します。
WoldxのアドレスをpPos.xに入れるとするなら、xがポインタとなるので、
struct SPos{
float *x;
float *y;
};
SPos pPos;
static float Woldx;
int main{
Woldx = 3;
pPos.x = &Woldx;
}
となります。
アロー演算子は、ポインタが構造体やクラスを指しているときに使用します。
(その構造体・クラスのメンバ変数/関数を参照する際にアロー演算子を使用する)
(補足)
やりそうな勘違い、ということで一つ追記しておきます。
WoldxのアドレスがpPos.xに格納された訳ですが、pPos.xでWoldxの内容を参照するのは
pPos->xではありません。*(pPos.x)がWoldxの中身を指します。
(見ての通りあまりきれいな参照の仕方では無いわけで、実際には少々工夫をしたりするのですが…)
|
Re: アロー演算子のエラー ( No.2 ) |
- 名前:meigin 日時:2008/01/07 23:58
実体が無いからだと思います。
SPos pPos;
pPos.x = Woldx;
とすれば通ると思います
それとも
SPos gPos;
SPos *pPos = &gPos;
かな?
目的に応じて、使い分けて下さい
簡単に言うと、何処に入れて良いのか解らない
ので、エラーです。
入れる場所を教えてあげれば、
エラーは出なくなります
|
Re: アロー演算子のエラー ( No.3 ) |
- 名前:Sura 日時:2008/01/08 02:13
プログラムの原型を留めるようにするには
new 及び delete を使うとよいと思います。
struct SPos{
float x;
float y;
}
SPos *pPos;
static float Woldx;
int main{
pPos = new SPos;
Woldx = 3;
pPos->x = Woldx;
delete pPos;
}
|
Re: アロー演算子のエラー ( No.4 ) |
- 名前:憂煉 日時:2008/01/08 00:50
Woldxのアドレスをxに入れるなら
struct SPos{
float *x;
float y;
}
xをポインタにする必要があります
他の部分は既に回答が出てるので省略
|
Re: アロー演算子のエラー ( No.5 ) |
- 名前:k−n 日時:2008/01/09 16:31
ありがとうございます。
おかげで解決いたしました。
|