[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
質問
c++入門の授業で、様々な統計を計算するプログラムを作成するプロジェクトに取り組んでいます。計算方法は決まっているのですが、教授から
std::istream
を使用して、ファイルから入力を収集します。このプログラムは、End of Fileマーカーに達するまでファイルから情報を収集し続けることになります。私は、その方法について非常に不慣れです。
std::istream
が動作し、コンパイルしようとするとこのエラーに何度も遭遇します。
main.cpp:5:10: error: call to non-static member functions without an オブジェクト引数 stats::getInput(std::cin);
以下は、私のstats.cppファイルです。
#include "stats.h"
#include <vector>
#include <cstdlib>
#include <iostream>
stats::stats(){
}
std::vector <double> stats::getInput(std::istream& input_stream){
std::vector <double> stream;
double x;
while(input_stream){
input_stream >> x;
// std::cout << "your list of numbers is: " << x << std::endl;
if(input_stream){
stream.push_back(x);
}
}
return stream;
}
以下は私のヘッダーファイルです。
#ifndef _STATS_
#define _STATS_
#include <vector>
#include <cstdlib>
class stats{
public:
stats();
std::vector <double> getInput(std::istream& input_stream);
private:
};
#endif
そして、これが私のmain.cppファイルです。
#include "stats.h"
#include <iostream>
int main(){
stats::getInput(std::cin);
}
私が言ったように、私はc++の初心者なので、おそらく答えはかなり簡単ですが、c++はPythonと大きく異なります。私は同様の質問を見たことがありますが、どれもそれを理解するのに役立ちませんでした。
ありがとうございます
解決方法は?
コンパイラからのエラーメッセージは非常にわかりやすいです。
getInput
は非
static
クラスのメンバ関数です。
そのメンバー関数を使用するには、そのクラスのオブジェクトが必要です。
の代わりに
stats::getInput(std::cin);
使用
stats obj;
obj.getInput(std::cin);
もう一つの解決策
このクラスはメンバ変数を持たないので、このクラスで使用するために
getInput
を追加しました。
static
のメンバ関数です。
class stats {
public:
stats();
static std::vector <double> getInput(std::istream& input_stream);
private:
};
その場合、使用することができます。
stats::getInput(std::cin);
また、データを読み込むループは、次のように簡略化することができます。
while (input_stream >> x){
stream.push_back(x);
}
関連
-
[解決済み] エラー: '...'のメンバー '...'が非クラス型である場合のリクエスト
-
[解決済み] テスト
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
最新
-
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++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された