tôi đang tìm ra cách để khởi tạo bản đồ tĩnh trong C++ và tìm thấy mã này:tại sao "tĩnh" có thể không được sử dụng khi xác định (trái với tuyên bố) một thành viên dữ liệu tĩnh "?
struct A{
static map<int,int> create_map()
{
map<int,int> m;
m[1] = 2;
m[3] = 4;
m[5] = 6;
return m;
}
static const map<int,int> myMap;
};
const map<int,int> A:: myMap = A::create_map();
Tuy nhiên, nếu tôi thay đổi dòng cuối cùng để
const static map<int,int> A:: myMap = A::create_map();
khiếu nại Compiler: 'tĩnh' có thể không được sử dụng khi xác định (trái ngược với tuyên bố) thành viên dữ liệu tĩnh "?
Tôi tự hỏi tại sao? Logic hoặc lý do đằng sau điều này là gì?
hoặc người nào khác có nghĩa là thành viên tĩnh, điều này sẽ không nhất quán. –
@BenVoigt không thể, tĩnh cho thành viên có dư thừa - bạn không thể xác định thành viên không tĩnh theo cách này. – Slava
@ Slava: Hoàn toàn đúng, nó sẽ không phù hợp và dư thừa, vì vậy hai lý do chính đáng để cấm nó. Nhưng tôi không nghĩ rằng câu hỏi đã được suy nghĩ của liên kết tĩnh. –