2017-04-04 27 views
0
へのポインタを宣言できません

私はコンパイラとしてgccを使用しています。私は、構造体のポインタを関数に渡し、ポインタを変更したい(ifの中の内容ではない)。私は、このエラーは、「構造体tm &」にポインターを宣言することはできません」を取得することを行うとは 'struct tm&

​​

:私はこれを行うにしようとしていた

void addDate(int & *timeinfo, string &response); 

:私は、私のような何かを行うことができます知っています。これどうやってするの?私の唯一のオプションはダブルポインターですか?私はそれが悪いことではないことを知っていますが、私はできるだけそれらを避けたいです。

+3

ポインタへの参照が必要な場合は、 '&*'ではなく '*&'を使用してください。 – aschepler

答えて

1

struct tmはタイプです。

struct tm & timeinfoは、timeinfoがそのタイプの変数を参照していることを意味します。

struct tm * timeinfoは、timeinfoがその型の変数(存在していても存在しない可能性もある)へのポインタであることを意味します。

struct tm * & timeinfoは、time0foが、型(struct tm)の変数(存在する場合と存在しない場合がある)へのポインタとなる変数(存在する)への参照であることを意味します。

struct tm & *は何も意味しません。参照自体は変数ではなく、ポインタは変数を指しているため、参照へのポインタを持つことはできません。

注:「存在するかもしれない」とは、変数がメモリに割り当てられているかどうかを意味します。

関連する問題