Tuyên bố một trường tĩnh của một loại chưa hoàn thành tại thời điểm định nghĩa lớp hợp pháp trong C++? Ví dụ:Trường tĩnh của loại không đầy đủ - có hợp pháp không?
foo.h:
class Foo
{
public:
// ...
private:
class Bar;
static Bar something;
};
Foo.cpp:
class Foo::Bar
{
// ...
};
Foo::Bar Foo::something;
// some more code
Trình biên dịch dường như chấp nhận nó, và tôi không thấy có lý do mà nó phải được bị từ chối, nhưng tiêu chuẩn nói gì về tình huống như vậy? Tôi thực sự đánh giá cao một người đưa ra một trích dẫn trực tiếp từ tiêu chuẩn, tốt nhất là từ "cũ" (một từ năm 2003).
Yup. Đó là lý do tại sao tôi nói "Tôi không thấy một lý do mà nó nên bị từ chối". Tôi biết những điều bạn đã viết, tôi không chắc liệu tiêu chuẩn không cho phép mã như thế vì một lý do nào đó (đó là C++, bạn không bao giờ có thể chắc chắn), đó là lý do tại sao tôi muốn báo giá trực tiếp. Ngoài ra, tôi phải hỏi câu hỏi đầu tiên của mình ở đây;) – Fanael