0

これは本当に私を困惑させています。どういうわけか私は

「c1はこのスコープで宣言されていません」

コンパイラからのエラー。私はCode::BlocksでMingwを使用しています。グローバル変数はプログラムに対してグローバルであると思いますか?私が間違っている?TYIA-ローランド

    // main.h
    #include <iostream>

    #include "classone.cpp"
    #include "classtwo.cpp"

    extern AnotherClass c2;
    extern TheClass c1;


----------

    // main.cpp
    #include "main.h"

    AnotherClass c2;
    TheClass c1;

    int main()
    {

        c1.function5();
        c2.function2();

        return 0;
    }


----------

    //classone.h

    #include "main.h"
    class AnotherClass  {
    `
          public:
        void function2();

    void function3();

      private:
    int varone;
    int vartwo;
};


----------

// classone.cpp

#include "classone.h"

void AnotherClass::function2()  {

    std::cout << "Function 2 Check\n";
}

void AnotherClass::function3()  {

    std::cout << "Function 3 Check";
}


----------

// classtwo.h

#include "main.h"
class TheClass  {

      public:
    void function4();
    void function5();
};


----------

// classtwo.cpp
#include "classtwo.h"

void TheClass::function4()  {

    c1.function2();
    std::cout << "Function 2 Check\n";
}

void TheClass::function5()  {

    std::cout << "Function 3 Check";
}
4

3 に答える 3

4

そのような .cpp ファイルをインクルードするのは非常にばかげています。ヘッダーのみをインクルードします。

とにかく、main.h を次のように変更します。

#include <iostream>
extern AnotherClass c2;
extern TheClass c1;

これを main.cpp に追加します。

AnotherClass c2;
TheClass c1;

次に、次main.hのように、それを必要とする各ファイルに含めます。

// classtwo.cpp
#include "classtwo.h"
#include "main.h"

void TheClass::function4()  {

    c1.function2();
    std::cout << "Function 2 Check\n";
}

void TheClass::function5()  {

    std::cout << "Function 3 Check";
}

また、ガードがまだない場合は、ガードを含める必要があります。

于 2013-01-17T09:22:02.173 に答える
0

すべてのコードを 1 つのファイルにコンパイルする場合は、.cpp ファイルにクラス宣言を含める必要があります。classtwo.cpp 内に #include "classtwo.h" を挿入し、両方のファイルの先頭にある classone に対して同じことを行います。

標準的な方法は、クラス コードをクライアント コードから分離することです。そのため、クラスをライブラリにコンパイルし、それをメイン プログラムにリンクする必要があります。

于 2013-01-17T09:21:53.987 に答える
0

動作させるには、2 つのクラスのファイルを含めるmain .h必要があります。ファイル.hを含める必要はありません (含めるべきではありません) 。.cpp

于 2013-01-17T09:23:18.167 に答える