簡體   English   中英

struct作為C ++中函數的類型

[英]struct as a type for function in C++

我正在學習C ++,並試圖創建一個在類定義中定義的返回類型為“ my_message_t”的函數。 但是,當我嘗試編譯它時,編譯器通知我該錯誤: “ my_message_t”未命名類型

我有以下代碼(protocols.h和protocols.cpp)

    namespace Protocols {
                class Messages {
                    public:

                        typedef struct _my_message_t {
                            //stuffs
                        } my_message_t;

                        typedef enum {
                                //stuffs 
                        } my_message_e;

                private:
                    my_message_t                            my_msg;
                    my_message_e                            msg_en; 

                public:
                    Messages();     
                    ~Messages();    

                    my_message_t create_message(const my_message__e); 

            };
        };

類定義如下:

            namespace Protocols {

                    Messages::Messages(){
                        //stuff
                    };

                    Messages::~Messages(){
                        //stuffs
                    }

                    my_message_t Messages::create_message(my_message_e type){
                        my_message_t msg;

                        //do stuffs

                        return msg;
                    }
            }

為什么我不能創建類型為my_message_t的函數? 如何在上面修復該代碼?

my_message_t的作用域在Messages類內部,因此在類的成員外部使用時需要對其進行限定:

Messages::my_message_t Messages::create_message(my_message_e type){
^^^^^^^^^^
    // do stuffs
}

請注意,您不需要在函數參數列表中僅返回類型; 語言的怪異意味着參數列表的作用域在函數內部,而返回類型在函數外部。

更改:

my_message_t Messages::create_message(my_message_type_e type)

至:

Messages::my_message_t Messages::create_message(my_message_e type)
^^^^^^^^^^

my_message_t是在Messages類內部定義的類型,因此您需要:

Messages::my_message_t Messages::create_message(my_message_type_e type)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM