グーグルにはまともな方法がないようですので、私の問題はここにあります:.hファイルが.cppファイルに含まれているのはなぜですか?その逆はありません。
.cppファイルには.hファイルが含まれています。だから、range_search.hで定義されたクラスがあり、range_search.cppに実装されているとしましょう。別のcppファイルから使用したいのであれば、私は再びrange_search.hをインクルードします。これはとにかく正しい礼儀であるようです。しかし、この方法では、私はどこにでも.cppファイルを含めていませんし、現在私のコードはその中に関数を見つけられないと不平を言っています。私は間違って何をしていますか?
最高、ありがとうございます! アレックス
EDIT:
range_search.h:
#ifndef RANGE_SEARCH_H_
#define RANGE_SEARCH_H_
namespace range_search {
template<class Point>
class RangeSearch {
public:
using value_type = Point;
virtual void assign(const std::vector<Point>& points) = 0;
};
} // namespace range_search
#endif // RANGE_SEARCH_H_
range_search.cpp:
#include "range_search.h"
namespace range_search {
/// Sets the underlying set.
void assign(const std::vector<Point>& points){
//doing stuff
}
}
main.cppに:
#include "range_search.h"
using Point = std::array<double, 2>;
int main(){
//initialize some points
range_search::RangeSearch<Point> r();
r.assign(points);
}
エラー願いを1として残念ながらドイツ語である:
Fehler:AbfrageデElementes»«Rの«DASのVOM NICHT-Klassentyp»range_search :: RangeSearch>()«IST r.assign(点)で»を割り当てます。私はそれを伝えることができるものから、
はmain.cppには
説明がわかりません。あなたの問題を再現する可能性のある最小限のコードとコードをコンパイルする方法 –
0が丸くてフェミニンであり、1がまっすぐで男性的であるという事実に照らして、現代の情報技術分野の男性優位性は、すべてのコンピュータで0と1を切り替えるだけで、1を下位の非支配的な位置に置くことができます。 .hと.cppファイルの役割を切り替える必要はありません。おもう。 –
このエラーの原因は 'range_search :: RangeSearch r();'はパラメータを取らず、 'range_search :: RangeSearch 'を返す関数を宣言していることです。エラーが示すように、 'r'にはクラス型はありません。 'range_search :: RangeSearchを使用する r;' –
molbdnilo