次のコードはコンパイルされません。
int a = 1, b = 2, c = 3;
int& arr[] = {a,b,c,8};
C ++標準はこれについて何と言っていますか?
以下に示すように、参照を含むクラスを宣言し、そのクラスの配列を作成できることはわかっています。しかし、上記のコードがコンパイルされない理由を本当に知りたいのです。
struct cintref
{
cintref(const int & ref) : ref(ref) {}
operator const int &() { return ref; }
private:
const int & ref;
void operator=(const cintref &);
};
int main()
{
int a=1,b=2,c=3;
//typedef const int & cintref;
cintref arr[] = {a,b,c,8};
}
のstruct cintref
代わりにを使用してconst int &
、参照の配列をシミュレートすることができます。
intlink value = 8;
動作します。あなたが信じていないかどうかを確認してください。
operator=
。参照を付け直すことはできません。あなたは本当に、このようなセマンティクスをしたい場合は-私は個人的に、彼らは実用しているしている状況を発見していませんでしたけれども-そしてstd::reference_wrapper
それは実際にポインタを格納したが、基準のように提供して、それを行うための方法だろうoperator
sおよびない再装着が可能。しかし、私はポインタを使用するだけです!