15

戻り値の型が構造体であるときに問題が発生する

Example.h

class Example {
private:
    typedef struct connection_header {
        string url;
        string method;
    };

    static connection_header get_connection_header();
};

Example.cpp
connection_header Example::get_connection_header() {
    return NULL;
}

私は得ています'connection_header' does not name a type

このエラーの理由がわかりますか

4

5 に答える 5

17

typedefタイプに名前を付けずに使用しています。をドロップするだけtypedefです。ここでは必要ありません。

struct connection_header {
    string url;
    string method;
};

次に、connection_headerExampleクラス内で宣言されているため、戻り型の場合は実装でその名前を完全修飾する必要があります。

Example::connection_header Example::get_connection_header()
于 2013-03-13T07:25:27.540 に答える
3

まず、C++ (ただし C ではない) では、すべてのstructorclassが型に名前を付けます。したがって、 a を宣言するstruct connection_headerと、型も取得されるため、後で変数connection_headerを宣言できます。connection_header var

次に、typedefC と C++ の両方で型と名前が必要です。例えば:

 typedef long my_number_type;

my_number_typeの同義語として宣言しますlong

他の人が指摘したように、ドロップしますtypedef

于 2013-03-13T07:25:39.133 に答える
3

cppファイルで以下のコードを試して、Example::前に追加してくださいconnection_header

Example::connection_header Example::get_connection_header() {
    return NULL;
}

connection_header内部で定義されているExampleため、定義範囲を指定する必要があります。

また、キーワードtypedefは C++ では無視されます。省略できます

于 2013-03-13T07:26:09.177 に答える