Khi sử dụng macro BOOST_SERIALIZATION_NVP
để tạo cặp giá trị tên cho tuần tự hóa XML, trình biên dịch vui vẻ cho phép mã sau biên dịch, mặc dù tên phần tử không phải là XML hợp lệ phần tử và một trường hợp ngoại lệ được ném khi cố gắng thực sự serialize các đối tượng thành XML:tăng tuần tự hóa các macro NVP macro và các phần tử không phải là thành phần XML
BOOST_SERIALIZATION_NVP(_member[index])
một sửa chữa rõ ràng là sử dụng:
boost::serialization::make_nvp("ValidMemberName", _member[index])
Nhưng bất cứ ai có thể đề nghị một cách để sửa đổi thúc đẩy để yếu tố bất hợp pháp tên sẽ kích hoạt một compilatio n lỗi? (Do đó không dựa vào kiểm tra đơn vị để bắt lỗi tinh tế trên)
Edit:
Một ý tưởng là bằng cách nào đó khai báo một biến địa phương giả với tên của các yếu tố truyền cho vĩ mô, giả định tập hợp các số nhận dạng hợp lệ trong C++ là một tập hợp con các phần tử XML hợp lệ. Không chắc chắn toàn bộ điều này có thể được thực hiện mặc dù.
Điều này sẽ tạo ra lỗi thời gian chạy 'what(): Tên thẻ XML không hợp lệ ' – alfC