21

関数内にクラス オブジェクトがあるクラスから関数にアクセスする際に問題がありmainます。クラスのオブジェクトを作成し、そのオブジェクトを使用してそのクラスの.cppファイル内の関数にアクセスしようとしています。エラーが発生し続け、それをテストするための最も単純なプログラムを作成しましたが、それでもエラーが発生します。

主要:

#include <iostream>
#include "Attack.h"

using namespace std;

int main()
{
    Attack attackObj;
    attackObj.printShiz();
}

クラスヘッダー:

#ifndef ATTACK_H
#define ATTACK_H

class Attack
{
    public:
        Attack();
        void printShiz();
    protected:
    private:
};

#endif // ATTACK_H

クラス .cpp:

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

Attack::Attack() {

}

void Attack::printShiz() {
    cout << "Test" << endl;
}

このエラーを修正するにはどうすればよいですか? 関数内のオブジェクトを使用しprintShiz()てクラス内の関数にアクセスしようとするたびに、エラーが発生し、この関数がこのクラス内に存在するとは考えられません。Attackmain

エラー:

エラー: 'class Attack' には 'printShiz' という名前のメンバーがありません

4

9 に答える 9

1

同様の問題がありました。クラスの定義を含むヘッダー ファイルが機能しませんでした。そのクラスのメンバー関数を使用できませんでした。したがって、クラスを別のヘッダーファイルにコピーしただけです。今はすべて正常に動作しています。

于 2020-08-20T15:37:38.460 に答える
0

関数をヘッダーに直接定義してみてください

 #ifndef ATTACK_H
 #define ATTACK_H

 class Attack {
     public:
         Attack(){};
         void printShiz(){};
     protected:
     private: };

 #endif // ATTACK_H

そしてコンパイルします。コンパイラが定義の重複について文句を言わない場合は、Class.cpp ファイルをコンパイルするのを忘れたことを意味します。それを行う必要があるだけです (それを Makefile/project/solution に追加します...どのツールチェーンを使用していますか?)

于 2013-07-05T08:22:54.900 に答える
0

私はこれが1年前であることを知っていますが、同じ問題に遭遇しました. 私の問題は、実装ファイルにコンストラクターがなかったことです。ここでの問題は、#endif の後のヘッダー ファイルの末尾にあるコメント マークである可能性があると思います...

于 2014-11-24T22:40:47.927 に答える