私はC++ドライバから、私が働く環境内のクラス内の新しいメソッドにいくつかの処理を移動しようとしています。私はこのメソッドの作業を開始しましたが、新しく記述されたメソッドのクラスに存在する他のオブジェクト依存メソッドを呼び出そうとすると、問題に直面しています。ここでは、コードの一部は次のとおりです。C++:別のメソッド内でオブジェクト依存メソッドを呼び出す
bool resample_edf(VVectorDouble& sigin_a, VVectorDouble& sig_out_a,
long out_freq_a) {
// display debugging information
//
if (debug_level_d >= Edf::LEVEL_DETAILED) {
fprintf(stdout, "Edf::resample_edf(): starting resample/n");
}
// get the labels in the file
//
char* labels[Edf::MAX_NCHANS];
long num_channels = Edf::get_labels(labels);
long num_samples = (long) Edf::get_duration() * Edf::get_sample_frequency();
...
get_labels(labels)
、get_duration()
、およびget_sample_frequency()
方法は、私が働いていますEDFクラスのすべてのメソッドですが、それをコンパイルしようとしたとき、私はこのエラーを取得します。
edf_01.cc:2240:45: error: cannot call member function ‘long int Edf::get_labels(char**)’ without object
long num_channels = Edf::get_labels(labels);
^
edf_01.cc:2242:47: error: cannot call member function ‘double Edf::get_duration()’ without object
long num_samples = (long) Edf::get_duration() * Edf::get_sample_frequency();
すべてのメソッドはパブリックメソッドですが、使用する変数の一部はクラスで保護されています。
この問題を解決する方法は正確にはわかりませんが、引き続き検討します。ありがとうございました。より多くの情報が必要な場合はお知らせください。
編集:私はいくつかの誤解があるので、より多くの情報を提供します。
このメソッドを呼び出すユーティリティにEdfオブジェクトが既に存在します。ユーティリティは、現時点では次のようになります。
// local include files
//
#include <Edf.h>
...
int main(int argc, const char** argv) {
...
// create an Edf object
//
Edf edf(Edf::LEVEL_NONE);
// resample the signal
//
if (!edf.resample_edf(sig_in, sig_out, out_freq)) {
fprintf(stdout, " **> nedc_resample_edf: error resampling signal\n");
return((status = -1))
}
...
resample_edf方法は、EDFオブジェクト内のメソッドです。今、そのメソッドの中で、オブジェクトから他のメソッドを呼び出せるようにしたいのですが、そうすることでエラーが発生します。このメソッド内でedfオブジェクトを再インスタンス化しても、ここでは役に立ちません。私はそれをやるために複数の方法を試みましたが、何も働いていませんでした。
クラスのコンパイルにはユーティリティと関係がないため、ユーティリティの実行方法は当初含まれませんでした。この問題は、メソッドが同じオブジェクトから他のメソッドを呼び出す方法から発生します。 Edfクラスは非常に大きいので、すべてをあなたに提供することは難しいでしょう。
ご迷惑をおかけして申し訳ございません。
に
/n
代わりの\n
を使用していることに気づきましたか?あるいは、静的関数を宣言しますか?いくつかの方法をリストしてください:) – Rakete1111[初心者の本を探す](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)とクラスとオブジェクトが相互に作用する方法を再学習するクラスとオブジェクトの違いは何か。 –