mã lỗi là C2131.static constexpr char m_pszFoo [] = "*** FOO ***" có biểu thức lỗi biên dịch không đánh giá hằng số
intelisense không phàn nàn ngay cả khi tôi gọi kích thước của biến này trong các tệp khác intelisense biết kích thước. những gì tôi thiếu để có được điều này làm việc? Bất kỳ trợ giúp nào cũng được đánh giá rất cao. Trong pic dưới đây thấy intelisense không phàn nàn và cũng xác định kích thước.
dụ a.h:
class a
{
private:
static constexpr char m_pszFoo[] = "***FOO***"; // compile error on this line C2131 expression did not evaluate to a constant
public:
a() { sizeof(m_pszFoo); }; // no compile error here
};
để tái tạo tất cả các bạn cần làm là bao gồm a.h trong bất kỳ tập tin khác. Nó sẽ không tái tạo mà không có sự bao gồm.
@NathanOliver đã xác minh ví dụ trên trong msvc 2015 14.0.24720.00 cập nhật 1 – user1881587
Tôi có thể xác nhận nó không biên dịch trong MSVS. Cả hai clang và gcc biên dịch. – NathanOliver
thử tạo hàm tạo 'constexpr' –