2012-04-07 32 views
8

Có một chương trình như thế này:nhận dạng mong đợi trước khi chuỗi liên tục

#include <iostream> 
#include <string> 
using namespace std; 
class test 
{ 
public: 
    test(std::string s):str(s){}; 
private: 
    std::string str; 
}; 

class test1 
{ 
public: 
    test tst_("Hi"); 
}; 

int main() 
{ 
    return 1; 
} 

... tại sao tôi lại nhận được sau khi tôi thực hiện

g ++ main.cpp

main.cpp:16:12: error: expected identifier before string constant 
main.cpp:16:12: error: expected ‘,’ or ‘...’ before string constant 
+1

Bạn thực sự nên học cách luôn biên dịch với 'g ++ -Wall -g' –

Trả lời

15

Bạn không thể khởi tạo tst_ nơi bạn khai báo nó. Điều này chỉ có thể được thực hiện cho các kiểu nguyên thủy const tĩnh. Thay vào đó, bạn sẽ cần phải có hàm tạo cho test1.

EDIT: đây là ví dụ hoạt động trong ideone.com. Lưu ý một vài thay đổi tôi đã làm - đầu tiên nó là tốt hơn để có các nhà xây dựng của thử nghiệm mất một tham chiếu const để chuỗi để tránh sao chép. Thứ hai - nếu chương trình thành công, bạn nên trả lại 0 không 1 (với trả về 1 bạn nhận được lỗi thời gian chạy trong ideone)

Các vấn đề liên quan