Tôi biết có nhiều cách khác để triển khai hoặc sử dụng vùng chứa này. Đây chỉ là để thỏa mãn sự tò mò của tôi. Giả sử tôi có đoạn mã sau:Truyền mảng theo tham chiếu - tập hợp con của một mảng lớn hơn
void byref(int (&a)[5]);
int main()
{
int a[5];
byref(a);
}
Một lợi thế của đi qua một mảng C-style bằng cách tham khảo là sizeof
sẽ làm việc trên nó, như sẽ std::end
. Nhưng bây giờ nó chỉ có thể vượt qua một mảng chính xác kích thước này.
Có thể chuyển một tập hợp con của một mảng lớn hơn đến hàm này bằng cách tham chiếu không? Ví dụ: tôi muốn làm:
int main()
{
int a[10];
byref(a + 1);
}
Có cách nào để thực hiện công việc này không?
tôi đã nhận nó để xây dựng và chạy, cho giá trị dự kiến trong VS2015, nhưng tất nhiên các mã trông rất tinh ranh:
byref(reinterpret_cast<int(&)[5]>(*(a + 1)));
Sử dụng 'mảng_view'. –
@KarolyHorvath, OP biết rằng có nhiều cách khác để triển khai hoặc sử dụng vùng chứa này. –
Trong С ++ bạn có thể sử dụng mẫu: 'template void byref (int (& a) [N]);' –
Constructor