Đây là những gì tôi đã có:Có thể một lớp C++ chứa một const std tĩnh :: mảng khởi tạo nội tuyến trong một tệp tiêu đề không?
struct Foo
{
static std::array<double, 4> acgt_default_background_frequencies() { return {0.281774, 0.222020, 0.228876, 0.267330}; }
};
Nhưng tôi muốn không sử dụng một hàm và thay vào đó chỉ có một biến, như thế này:
struct Foo
{
static constexpr std::array<double, 4> acgt_default_background_frequencies = {0.281774, 0.222020, 0.228876, 0.267330};
};
Những gì tôi muốn biên dịch , nhưng khi tôi try to useFoo::acgt_default_background_frequencies
nó cung cấp cho lỗi trình liên kết "không xác định tham chiếu đến` Foo :: acgt_default_background_frequencies '".
Tôi đang cố gắng làm điều gì? Tôi nghĩ rằng nó là rõ ràng hơn cho người đọc của tiêu đề của tôi nếu tôi có giá trị inlined như một const hơn để ẩn nó trong tập tin .cpp và có một hằng số như trái ngược với một chức năng cũng có vẻ rõ ràng hơn. Không phải là điểm của constexpr để cho phép các công cụ như thế này? Nếu không thể, tại sao không?
Cách tiếp cận chức năng của bạn không hiệu quả vì nó sao chép toàn bộ mảng mỗi khi được gọi. Bạn có thể sửa lỗi này bằng cách làm cho mảng tĩnh và trả về một tham chiếu đến nó. –