2010-09-15 45 views
9

Khi biên dịch mã này tôi nhận được sau error:`Khởi tạo không tham chiếu` không hợp lệ là gì?

In function 'int main()': Line 11: error: invalid initialization of non-const reference of type 'Main&' from a temporary of type 'Main'

Dưới đây là mã của tôi:

template <class T> 
struct Main 
{ 
    static Main tempFunction(){ 
     return Main(); 
    } 
}; 

int main() 
{ 
    Main<int> &mainReference = Main<int>::tempFunction(); // <- line 11 
} 

Tôi không hiểu tại sao? Bất cứ ai có thể giải thích?

+1

lỗi – Mark

+1

là gì Xin vui lòng gửi các thông báo lỗi chính xác từ trình biên dịch. –

+0

Việc khai báo mẫu của bạn không phụ thuộc vào lớp được tham số hóa. –

Trả lời

9

Trong thời gian C++ không thể bị ràng buộc với tham chiếu không liên tục.

Main<int> &mainReference = Main<int>::tempFunction();

Ở đây bạn đang cố gắng để gán kết quả của một biểu thức rvalue đến một tham chiếu không liên tục mainReference đó là không hợp lệ.

Cố gắng làm cho nó const

+2

http://herbsutter.com/2008/01/01/gotw-88-a-candidate-for-the-most-important-const/ – log0

+0

@Ugo: Vâng, bài viết hay. Ý bạn là sao? –

+0

Cảm ơn Prasoon Saurav. – Donald

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