1

まず第一に、私は一般的なプログラミングにかなり慣れていないので、これは厄介かもしれません。
さて、私はrpgゲームを作成していて、すべての武器をWeapons.cppというファイルに入れたいと思っています。
「weaponDamage」や「weaponName」などのすべてのグローバル変数をcommon.hというヘッダーファイルに入れて、メインファイルと.cppファイルの両方からこれらの変数にアクセスして操作できるようにしました。しかし、問題は、それらの変数と関数が私のヘッダーで見つからないように見えることです。

ここにいくつかのコードがあります:

common.h:

#include <string>  
#ifndef COMMON_H_INCLUDED  
#define COMMON_H_INCLUDED  

//global variables  
extern int pureDamage = 0;  
extern int pureHealth = 0;  
extern int weaponDamage;  
extern int armorDefense;  
extern int totalDamage = pureDamage + weaponDamage;  
extern int totalHealth = pureHealth + armorDefense;  
extern int totalLuck;  
extern string starsign;  
extern string weaponName;  

//all weapons  

void weaponSwordIron();  
void weaponSwordGold();  
void weaponSwordSwordOfTheHeavens();  
void weaponBowSimple();  
void weaponBowLongBow();  
void weaponBowThunder();  
void weaponStaffStaffOfFlames();  
void weaponStaffStaffOfLightning();  
void weaponStaffStaffOfAssKicking();  

#endif // COMMON_H_INCLUDED  

Weapons.cpp:

#include <iostream>  
#include <string>  
#include <common.h>  


using namespace std;

void weaponSwordIron()
{
    int weaponDamage = 5;
    string weaponName = "Iron Sword";
}
void weaponSwordGold()
{
    int weaponDamage = 8;
    string weaponName = "Gold Sword";
}
void weaponSwordSwordOfTheHeavens()
{
    int weaponDamage = 15;
    string weaponName = "Sword Of The Heavens";
}
void weaponBowSimple()
{
    int weaponDamage = 5;
    string weaponName = "Simple Bow";
}
void weaponBowLongBow()
{
    int weaponDamage = 8;
    string weaponName = "Long Bow";
}
void weaponBowThunder()
{
    int weaponDamage = 15;
    string weaponName = "Thunder Bow";
}
void weaponStaffStaffOfFlames()
{
    int weaponDamage = 5;
    string weaponName = "Staff Of Flames";
}
void weaponStaffStaffOfLightning()
{
    int weaponDamage = 8;
    string weaponName = "Staff Of Lightning";
}
void weaponStaffStaffOfAssKicking()
{
    int weaponDamage = 15;
    string weaponName = "Staff Of Ass Kicking";
} 

そして私のメインの小さな部分、と呼ばれる関数GiveWeapon()

void GiveWeapon()
{

    system("cls");
    if (starsign == "mage")
    {
        weaponSwordIron();
        cout << weaponDamage;
        cout << weaponName;
    }
    else if (starsign == "warrior")
    {
        weaponBowSimple();
    }
    else if (starsign == "archer")
    {
        weaponStaffStaffOfFlames();
    }
    else
    {
        ChooseStarsign();
    }
    AssignAttributes();
}  

そして、はい、common.hを含めることを覚えていまし
た。IDEで発生するエラーCode::Blocksは:error:common.h:そのようなファイルやディレクトリ
がない理由がわからないので、助けてください。

長い投稿をお詫び申し上げます。よろしくお願いいたします。

4

5 に答える 5

2

"common.h"の代わりに使用してください<common.h>。角度の付いたものはライブラリファイル用です。

于 2012-09-09T19:24:13.990 に答える
0

使用し"common.h"ないでください< common.h>

于 2012-09-09T19:23:25.317 に答える
0

weopens.cpp はほとんどナンセンスです。

私は以下をコンパイルしようとしました:

void a() {
 int b = 5; }

int main()
{
 a();
 return 0;
}

そしてg ++はその考えが好きではありませんでした。

于 2012-09-09T19:32:55.793 に答える
0

「common.h」はどこに配置されていますか? "Weapons.cpp" のあるフォルダーからそれらへの相対パスを指定する必要があります。

次に、関数でローカル変数を定義します。Weapons.cpp ファイルは次のようになっている必要があります。

#include <iostream>
#include <string>
#include "relative/path/to/common.h"

//global variables
int pureDamage = 0;
int pureHealth = 0;
int weaponDamage;
int armorDefense;
int totalDamage = pureDamage + weaponDamage;
int totalHealth = pureHealth + armorDefense;
int totalLuck;
string starsign;
string weaponName;

using namespace std;

void weaponSwordIron()
{
    weaponDamage = 5;
    weaponName = "Iron Sword";
}
void weaponSwordGold()
{
    weaponDamage = 8;
    weaponName = "Gold Sword";
}
...
于 2012-09-10T06:01:47.313 に答える
0

In addition to the header location issues and local variable shadowing that others have mentioned, I think you're also going to run into problems with multiple definition errors:

extern int pureDamage = 0;

この宣言の初期化子は をオーバーライドするexternため、この変数は宣言されるだけでなく、このヘッダーを含むコンパイル単位でも定義されます。あなたのリンカーは文句を言うでしょう。

複数のファイルでグローバルを本当に使用したい場合は、ソース ファイルで一度extern変数を定義して初期化し、ヘッダー ファイルで (初期化子なしで) 宣言する必要があります。constただし、変数はこれの例外です。

于 2017-01-29T00:09:15.777 に答える