構造体をヘッダーファイルに渡す標準的な方法

Ptheguy

struct宣言さmain.cppれたインをクラスヘッダーファイルに渡す標準/正しい方法を知りたいのですが、ヘッダーファイル内のその構造の内容を変更したいと思います。以下は私がやりたいことの簡単な例であり、それは正しく機能します。しかし、私はそれを行うためのより良い、より標準的な方法があるかどうか知りたいと思いました。私はC ++にあまり詳しくないので、現在の実装に隠れた欠陥があるかどうかはわかりません。

num.h

struct A {
    int x, y;
};

class Num {
    public:
        void change(struct A& s, int t){
            s.x = t;
        }
        int getNum(int b){
            return b;
        }
};

main.cpp

#include <iostream>
#include "num.h"
using namespace std;

int main(){
    Num n;
    A a;
    a.x = 8;
    a.y = 9;

    cout << n.getNum(a.x) << endl;  \\outputs 8
    n.change(a, 5);
    cout << n.getNum(a.x) << endl;  \\outouts 5

    return 0;
}

基本的に、構造をファイルのA両方に表示して、両方が構造を変更できるようにします。現在、私の解決策は、ヘッダーファイルがファイルの拡張子に似ているため、ヘッダーファイルの先頭で宣言することでした。これは、すべてのコードの最初で宣言したかのように、すべてに表示されます。しかし、これが最善の方法かどうかはわかりません。フィードバックをいただければ幸いです。.cpp.hstruct A.cppstruct A

タッドマン

これは、ヘッダーファイルとは何か、struct定義は何をするのかという誤解に帰着すると思いますあなたの例では:

struct A {
    int x, y;
};

コンパイラーにとって、これは「2つの整数値を含む構造体がxありy、それを呼び出すA読みますメモリは割り当てられません。コードは実行されません。A後で話すときのために、それはただそれを心に留めています

これで、Numコードを実際に分割して、宣言実装を分離する必要があります

// num.h
class Num {
    public:
        void change(struct A& s, int t);
        int getNum(int b);
};

それがコンパイラに「Num2つの関数を持つと呼ばれるクラスがあります。ここでchangeA構造体と整数への参照をgetNum取り、整数を取り、整数を返します」と読みます。同様に、コードを実行したり、メモリに表示したりすることはありません。後で使用される仕様にすぎません。

次に、それがnum.cppどのように実装されているかを説明します。

#include "num.h"

void Num::change(struct A& s, int t) {
    s.x = t;
}

int Num::getNum(int b) {
    return b;
}

これは、などの他のコードから呼び出すことができる関数、実行可能コードを定義しますmain()このchangeメソッドは、「と呼ばれる構造体定義を使用してAx整数を引数と同じ値に設定する」と読み取りますt

これは、値を変更する限り「構造体を変更」しますが、の構造は変更しませんstruct技術的には、構造体内容変更していますが、構造体自体は変更していません。そのため、多くの人があなたの質問について混乱しています。

一部の言語では、定義後に構造を変更できますが、C ++はそれらの言語の1つではありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ヘッダーファイルの省略された構造体の再定義は標準に準拠していますか?

分類Dev

ヘッダーファイルの構造体がソースファイルにエラーを生成する

分類Dev

ヘッダーファイルに構造体がある

分類Dev

Cのヘッダーファイル内の構造体を認識する

分類Dev

ObjectiveC-ヘッダーファイルでtypedef構造体を使用する

分類Dev

c ++-ヘッダーファイルで使用するときに構造体が認識されない

分類Dev

不透明な構造体定義を別のヘッダーファイルに入れる

分類Dev

C ++でヘッダーファイルなしで構造体と関数をリンクする

分類Dev

arduinoで標準のcヘッダーファイルを使用する方法

分類Dev

C-ヘッダーファイルの構造体定義

分類Dev

GCCが構造体(.BMPファイルヘッダー)のサイズを変更しないようにする

分類Dev

ヘッダーファイルで構造体を宣言し、.cファイルで定義するにはどうすればよいですか。

分類Dev

ヘッダーファイルを宣言した後のC ++構造体が認識されない

分類Dev

.ccファイルによってアクセスおよび入力されるヘッダーファイル内の構造体を宣言します

分類Dev

ヘッダーファイルで定義されている構造体のリストを取得します

分類Dev

C標準ヘッダーファイルのコンパイラ組み込み型を回避する方法

分類Dev

別のヘッダーファイル内で構造体を宣言すると、LNK2001エラーが発生するのはなぜですか?

分類Dev

.cファイルのヘッダーから構造体を使用しようとすると型エラーが発生するのはなぜですか?

分類Dev

CGoがヘッダーファイルで宣言された構造体を認識しないのはなぜですか?

分類Dev

ヘッダーファイルから既存の構造体に演算子定義を追加するにはどうすればよいですか?

分類Dev

ファイル内のデータを読み取り、それを構造体に渡す方法〜> C

分類Dev

他の機能もあるヘッダーファイルの構造体を使用するにはどうすればよいですか?

分類Dev

cファイルでグローバルに使用するためのヘッダーファイルでのextern構造体テンプレートの宣言

分類Dev

ヘッダーファイルからの共用体内の2つの構造体

分類Dev

ヘッダーファイルで構造体が見つかりません

分類Dev

GoでJSONファイルを構造体に解析する方法

分類Dev

Matlab:構造体をCSVファイルに保存する方法は?

分類Dev

C ++-ヘッダーファイルの構造を外部から見えなくする

分類Dev

標準エラーをファイルにリダイレクトする方法

Related 関連記事

  1. 1

    ヘッダーファイルの省略された構造体の再定義は標準に準拠していますか?

  2. 2

    ヘッダーファイルの構造体がソースファイルにエラーを生成する

  3. 3

    ヘッダーファイルに構造体がある

  4. 4

    Cのヘッダーファイル内の構造体を認識する

  5. 5

    ObjectiveC-ヘッダーファイルでtypedef構造体を使用する

  6. 6

    c ++-ヘッダーファイルで使用するときに構造体が認識されない

  7. 7

    不透明な構造体定義を別のヘッダーファイルに入れる

  8. 8

    C ++でヘッダーファイルなしで構造体と関数をリンクする

  9. 9

    arduinoで標準のcヘッダーファイルを使用する方法

  10. 10

    C-ヘッダーファイルの構造体定義

  11. 11

    GCCが構造体(.BMPファイルヘッダー)のサイズを変更しないようにする

  12. 12

    ヘッダーファイルで構造体を宣言し、.cファイルで定義するにはどうすればよいですか。

  13. 13

    ヘッダーファイルを宣言した後のC ++構造体が認識されない

  14. 14

    .ccファイルによってアクセスおよび入力されるヘッダーファイル内の構造体を宣言します

  15. 15

    ヘッダーファイルで定義されている構造体のリストを取得します

  16. 16

    C標準ヘッダーファイルのコンパイラ組み込み型を回避する方法

  17. 17

    別のヘッダーファイル内で構造体を宣言すると、LNK2001エラーが発生するのはなぜですか?

  18. 18

    .cファイルのヘッダーから構造体を使用しようとすると型エラーが発生するのはなぜですか?

  19. 19

    CGoがヘッダーファイルで宣言された構造体を認識しないのはなぜですか?

  20. 20

    ヘッダーファイルから既存の構造体に演算子定義を追加するにはどうすればよいですか?

  21. 21

    ファイル内のデータを読み取り、それを構造体に渡す方法〜> C

  22. 22

    他の機能もあるヘッダーファイルの構造体を使用するにはどうすればよいですか?

  23. 23

    cファイルでグローバルに使用するためのヘッダーファイルでのextern構造体テンプレートの宣言

  24. 24

    ヘッダーファイルからの共用体内の2つの構造体

  25. 25

    ヘッダーファイルで構造体が見つかりません

  26. 26

    GoでJSONファイルを構造体に解析する方法

  27. 27

    Matlab:構造体をCSVファイルに保存する方法は?

  28. 28

    C ++-ヘッダーファイルの構造を外部から見えなくする

  29. 29

    標準エラーをファイルにリダイレクトする方法

ホットタグ

アーカイブ