5

Có thể tạo operator member_function_pointer_type() mà không sử dụng typedefs (tức là bằng cách chỉ định loại con trỏ hàm thành viên nội tuyến) không?toán tử member_function_pointer_type() không có typedef?

Ví dụ, khi thực hiện an toàn Bool Idiom:

class Foo 
{ 
    typedef void (Foo::*bool_type)() const; 
public: 
    operator bool_type() const; 
}; 

là nó có thể viết ra các loại bool_type trực tiếp khi khai báo các nhà điều hành? Nếu vậy, làm thế nào?

Trả lời

1

Dường như đây là trường hợp duy nhất mà bạn không thể khai báo (typecasting) operator mà không cần sử dụng typedef.

đã có nó được một chức năng tên này hay cách khác operator x, sau đó nó hoạt động tốt:

class Foo 
{ 
    typedef void (Foo::*bool_type)() const; 
public: 
    operator bool_type() const; 

// other syntax 
    void (Foo::* some_func() const)() const; // ok! named function 
    void (Foo::* operator *() const)() const; // ok! operator * 
    void (Foo::* operator() const)() const; // error! typecasting operator 
}; 

Demo.

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