tôi đã xây dựng MinGW từ thân cây-phiên bản GCC-4.7.0: http://code.google.com/p/mingw-builds/downloads/listkhông tĩnh thành viên dữ liệu initializers câu hỏi
Trong mô tả những thay đổi của phiên bản này người ta nói rằng không tĩnh initializers thành viên dữ liệu được thực hiện : http://gcc.gnu.org/gcc-4.7/changes.html
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm
Khi tôi cố gắng để biên dịch một ví dụ như vậy:
#include <iostream>
#include <string>
struct type {
type()
:i(33)
{}
int i;
std::string s("string");
};
int main() {
type t;
std::cout << t.i << " : " << t.s << std::endl;
}
tôi nhận được một tấn lỗi, và là một trong những này cuối cùng:
main.cpp: 16: 35: lưu ý: 'std :: string (loại :: ) (int) {aka std :: basic_string (loại ::) (int)} 'không bắt nguồn từ' const std :: basic_string < _CharT, _Traits, _Alloc> 'main.cpp: 16: 35: note: không thể giải quyết địa chỉ từ quá tải function 't.type :: s'
Nhưng theo tài liệu, mã đúng.
Tôi chưa cài đặt GCC 4.7 để kiểm tra và phiên bản của tôi không hỗ trợ khởi tạo thành viên, nhưng bạn có biên dịch nó với cờ -std = C++ 0x không? – Griwes
Lưu ý rằng các trình khởi tạo thành viên là mới đối với GCC 4.7, do đó, nó phải là một lỗi trình biên dịch đơn giản. –
để Griwes: có. – niXman