Tôi muốn khai báo hằng số chuỗi sẽ được sử dụng trên nhiều lớp khác nhau trong dự án. Tôi đang xem xét hai phương ánhằng số chuỗi tĩnh trong lớp vs không gian tên cho hằng số [C++]
Lựa chọn 1:
#header file
class constants{
static const string const1;
};
#cpp file
const string constants::const1="blah";
Phương án 2:
#header file
namespace constants{
static const string const1="blah";
};
Chỉ cần tự hỏi điều gì sẽ là một thực hiện tốt hơn.
Đã nhìn
Where to store Class Specific named constants in C++
Where to put constant strings in C++: static class members or anonymous namespaces
UPDATE:
Lựa chọn 3:
Dựa trên các đề xuất từ "potatoswatter" và "sellibitze" tôi hiện có triển khai sau đây?
#header file
namespace constants{
extern const string& const1(); //WORKS WITHOUT THE EXTERN ***WHY***
};
#cpp file
namespace constants{
const string& const1(){static string* str = new string ("blah"); return *str;}
}
Tôi bao gồm tệp tiêu đề mà tôi cần sử dụng hằng số. Có bất kỳ nhược điểm lớn nào của việc triển khai này không?
Tùy chọn 2 dường như không phải là giải pháp. Các chuỗi vẫn sẽ được xác định riêng cho từng tệp nguồn, mặc dù xuất hiện trong cùng một không gian tên. – Potatoswatter
Tùy chọn 2 là một giải pháp nếu Shishya thực sự nhận cú pháp cho nó đúng. (Không có 'tĩnh', và chuỗi chỉ có thể được khai báo trong tiêu đề, nhưng sẽ cần phải được định nghĩa trong tệp nguồn.) – pkh
@pkh: cú pháp phức tạp hơn một chút so với điều đó; v) – Potatoswatter