2010-02-17 34 views
11

Tôi mới bắt đầu làm việc với C++ sau khi không làm việc với nó trong một thời gian. Trong khi hầu hết nó có ý nghĩa, có một số bit mà tôi đang tìm kiếm một chút confuddling. Ví dụ, ai đó có thể vui lòng giải thích những gì dòng này không:Ai đó có thể giải thích kiểu chữ C++ này không?

typedef bool (OptionManager::* OptionHandler)(const ABString& value); 
+2

Tôi tò mò muốn biết tại sao một người nào đó đã downvoted này ... –

+0

Đó là không nghi ngờ một bản sao. Vấn đề là, chúng tôi có nhiều vấn đề khi tìm ra các câu hỏi giống hệt như bạn đã làm. (không phải của tôi downvote BTW) – MSalters

+3

Vui mừng khi thấy tôi không phải là người duy nhất tìm thấy cú pháp cú pháp hàm chức năng vụng về ... ở thời điểm tốt nhất! –

Trả lời

26

Nó định nghĩa kiểu OptionHandler là một con trỏ tới một hàm thành viên của lớp OptionManager, và nơi hàm thành viên này có một tham số kiểu const ABString& và lợi nhuận bool.

4

đây là một con trỏ tới một hàm thành viên của OptionManager mà phải mất một const ABString refrence và trả về một bool

2

Nó là một typedef để một con trỏ tới hàm thành viên. Vui lòng kiểm tra C++ FAQ.

9
typedef bool (OptionManager::* OptionHandler)(const ABString& value); 

Hãy bắt đầu với:

OptionManager::* OptionHandler 

này nói rằng ::* OptionHandler là một hàm thành viên của lớp OptionManager. * ở phía trước OptionHandler nói đó là con trỏ; điều này có nghĩa là OptionHandler là một con trỏ đến một hàm thành viên của một lớp OptionManager.

(const ABString& value) nói rằng hàm thành viên sẽ có giá trị loại ABString thành tham chiếu const.

bool nói rằng hàm thành viên sẽ trả về kiểu boolean.

typedef nói rằng việc sử dụng "* OptionHandler" bạn có thể tạo nhiều con trỏ hàm có thể lưu địa chỉ đó của hàm đó. Ví dụ:

OptionHandler fp[3]; 

fp[0], fp[1], fp[2] sẽ lưu địa chỉ các hàm có ngữ nghĩa phù hợp với giải thích ở trên.

+2

Tốt là bạn nên chia loại thành các phần nhỏ hơn, nhưng "' :: * OptionHandler' là một hàm thành viên ": tại sao không phải là thành viên thuần túy? Điều này chỉ được phát hiện khi nhìn vào môi trường xung quanh. – xtofl

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