Tôi có một lớp A
mất initializer_list
và lưu nó dưới dạng biến thành viên.sử dụng std :: initializer_list làm biến thành viên
class A
{
public:
A(std::initializer_list<std::string> il) :
m_il(il)
{}
std::initializer_list<std::string> m_il;
};
Một lớp B
có A
như là một biến thành viên đó là mặc định khởi tạo bằng cách sử dụng initializer_list
class B
{
public:
B()
{
std::cout << *m_a.m_il.begin() << std::endl;
}
A m_a { "hello", "bye" };
};
Bây giờ khi tôi chạy mã này trong chính, nó in gì cả.
int main()
{
B b;
}
Tại sao mã ở trên không in hello
? Việc sử dụng std::initializer_list
của tôi có đúng không?
Không sử dụng 'initializer_list' làm thành viên dữ liệu. – 0x499602D2
Việc khởi tạo một thành viên lớp không tĩnh thậm chí còn được đề cập [ở đây] (http://en.cppreference.com/w/cpp/utility/initializer_list) như một cái gì đó đặc biệt _không thể kéo dài tuổi thọ của tạm thời cơ bản – Useless