<目次>
(1) C++で「静的でないメンバー参照は特定のオブジェクトを基準とする相対参照である必要があります」エラーが出た時の対処
(1-1) エラーメッセージ
(1-2) 原因
(1-3) 対処
(1) C++で「静的でないメンバー参照は特定のオブジェクトを基準とする相対参照である必要があります」エラーが出た時の対処
(1-1) エラーメッセージ
E0245 静的でないメンバー参照は特定のオブジェクトを基準とする相対参照である必要があります

(1-2) 原因
●staticとは?
●staticでないメソッド
//# 親クラス
class Fruit {
//# 親クラス内のメソッド
public:
//# ▲修正前
void calcPrice(int amount) {
cout << "フルーツの値段:" << amount * 100 << endl;
}
};
Fruit::calcPrice(5);
//# オブジェクトを生成 Fruit fr; //# メソッドを呼び出し fr.calcPrice(5);
●staticなメソッド
//# 親クラス
class Fruit {
//# 親クラス内のメソッド
public:
//# ●修正後
static void calcPrice(int amount) {
cout << "フルーツの値段:" << amount * 100 << endl;
}
};
Fruit::calcPrice(5);
(1-3) 対処
#include <iostream>
#include <string>
using namespace std;
//# 親クラス
class Fruit {
//# 親クラス内のメソッド
public:
//# ▲修正前
void calcPrice(int amount) {
cout << "フルーツの値段:" << amount * 100 << endl;
}
};
//# 親クラスを継承したクラス
class Apple : public Fruit {
//# 親クラスを継承したクラス内のメソッド
public:
//# ▲修正前
void calcPrice(int amount) {
cout << "リンゴの値段:" << amount * 200 << endl;
}
};
int main() {
Fruit::calcPrice(5);
Apple::calcPrice(5);
return 0;
}
#include
#include
using namespace std;
//# 親クラス
class Fruit {
//# 親クラス内のメソッド
public:
//# ●修正後
static void calcPrice(int amount) {
cout << "フルーツの値段:" << amount * 100 << endl;
}
};
//# 親クラスを継承したクラス
class Apple : public Fruit {
//# 親クラスを継承したクラス内のメソッド
public:
//# ●修正後
static void calcPrice(int amount) {
cout << "リンゴの値段:" << amount * 200 << endl;
}
};
int main() {
Fruit::calcPrice(5);
Apple::calcPrice(5);
return 0;
}
