構造体ベクトルの内容を表示しようとしています。 しかし、私はこの機能を実行すると、エラーメッセージがある構造体に'funciton'を呼び出す一致関数がありません/関数に構造体ベクトルを渡します
void displayDetection(struct tDetection& param) {
cout << param.type << param.x1 << param.y1 << param.x2 << param.y2 << param.alpha << endl;
cout << param.thresh << param.ry <<endl;
cout << param.t1 << param.t2 << param.t3 <<endl;
cout << param.h << param.w << param.l << endl;
}
を表示するには、この私の構造体である
struct tDetection {
tBox box; // object type, box, orientation
double thresh; // detection score
double ry;
double t1, t2, t3;
double h, w, l;
};
機能彼らに
を表示する問題を抱えて: 'displayDetection'への呼び出しに一致する関数がありません。
bool eval(){ // set some global parameters initGlobals(); // ground truth and result directories string gt_dir = "/Users/Documents/c++/eval_too/eval_too/data/object/lable_2"; string result_dir = "/Users/Documents/c++/eval_too/eval_too/result/result_sha"; // results string plot_dir = result_dir + "/plot"; // create output directories system(("mkdir " + plot_dir).c_str()); // hold detections and ground truth in memory vector< vector<tGroundtruth> > groundtruth; vector< vector<tDetection> > detections; bool compute_aos=true; vector<bool> eval_image(NUM_CLASS, false); vector<bool> eval_ground(NUM_CLASS, false); vector<bool> eval_3d(NUM_CLASS, false); // for all images read groundtruth and detections for (int32_t i=0; i<N_TESTIMAGES; i++) { // file name char file_name[256]; sprintf(file_name,"%06d.txt",i); // read ground truth and result poses bool gt_success,det_success; vector<tGroundtruth> gt = loadGroundtruth(gt_dir + "/" + file_name,gt_success); // ** just follow them; no need to change vector<tDetection> det = loadDetections(result_dir + "/data/" + file_name, compute_aos, eval_image, eval_ground, eval_3d, det_success); // ** change to my format // ** add element to the vectors groundtruth.push_back(gt); detections.push_back(det); // check for errors if (!gt_success) { // mail->msg("ERROR: Couldn't read: %s of ground truth. Please write me an email!", file_name); cout << "ERROR: Couldn't read ground truth of file : " << file_name << endl; return false; } if (!det_success) { //mail->msg("ERROR: Couldn't read: %s", file_name); cout << "ERROR: Couldn't read detection of file : " << file_name << endl; return false; } } displayDetection(detections[0]); }
'detects [0]'は 'std :: vector'であり、 'tDetection'ではありません。 –
Mark
それは入れ子にされたベクトルです。関数は 'tDetection'だけを受け取り、' struct'は必要ありません。 –
void displayDetection(tDetection&param){...}これはあなたが提案したものですか? – Wes