[解決済み] エラーになりました。関数にアクセスできません
2022-02-08 15:27:32
質問
このエラーが出るのですが、メンバーの保護レベルが高すぎてアクセス不能になった場合のみ出ると思っていたのですが、とにかく出るんです。
Shopable.h:
#ifndef _SHOPABLE_H_
#define _SHOPABLE_H_
#include "Library.h"
class Shopable{
private:
std::string Name;
int Cost;
std::string Description;
public:
std::string getName() const{return Name;}
int getCost() const {return Cost;}
virtual std::string getDesc() const = 0;
};
#endif
Weapon.h:
#ifndef _WEAPON_H_
#define _WEAPON_H_
#include "Globals.h"
#include "Shopable.h"
class Weapon : Shopable{
private:
int Damage;
public:
Weapon(int Cost,int Damage,std::string Name) : Cost(Cost), Damage(Damage), Name(Name){}
std::string getDesc() const{
return getName()+"\t"+tostring(Damage)+"\t"+tostring(Cost);
}
int Damage(Entity *target){
int DamageDealt = 0;
//do damage algorithm things here
Special();
return DamageDealt;
}
};
#endif
正しいインクルードを持つランダム関数内のある行。
std::map< std::string, Weapon* > weapons;
Weapon* none = new Weapon(0,0,"None");
weapons[none->getName()] = none;
エラーは getName() - "エラー: 関数 'Shopable::getName' is inaccessible"
どうすればいいですか?
パブリックインテリジェンスを行いたい。
class Weapon : Shopable
であるべきです。
class Weapon : public Shopable
また、以下のような名前も
_SHOPABLE_H_
は、C++の実装のために予約されているため、ユーザーが書いたC++のコードでは不正です。先頭のアンダースコアは忘れて
SHOPABLE_H
.
そして
Weapon(int Cost,int Damage,std::string Name)
であるべきです。
Weapon(int Cost,int Damage, const std::string & Name )
を使用すると、文字列をコピーする不要なオーバーヘッドを回避できます。
C++の関数パラメータ名は、通常、小文字の後者で始まります。大文字で始まる名前は、一般的にユーザー定義型(クラス、構造体、列挙型など)のために予約されています。
話は変わりますが、あなたはどのC++の教科書で学んでいるのですか?
関連
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】C++エラー:の初期化に一致するコンストラクタがありません。
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み] C++の継承 - アクセス不能なベース?
-
[解決済み] 派生クラス関数から親クラス関数を呼び出すには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない