私には夢中になる質問がありますが、おそらく皆さんのためのケーキです。私は4つの数字からなる構造を定義し、この構造のベクトルを返す関数を持っています。私のヘッダファイルは、次のようになります。C++:ヘッダーファイル内の構造体のベクトル
Legendre.hpp
#include <opencv2/opencv.hpp>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector> //as suggested, but it doesn't help
#ifndef LEGENDRE_HPP_
#define LEGENDRE_HPP_
struct FourDoubles {
double Zeroth;
double First;
double Second;
double Third;
};
std::vector<FourDoubles> LegendreLookupTable(int size);
#endif /* LEGENDRE_HPP_ */
(実際にはいくつかのより多くの機能がありますが、これだけ含ま一見無意味を無視する) それから私は、ヘッダーを使用して、次のcppファイルを持っています:
Legendre.cpp
#include "Legendre.hpp"
using namespace std;
using namespace cv;
vector<FourDoubles> LegendreLookupTable(int size) {
vector<FourDoubles> res(size);
int i;
double x,x2,x3,x4;
for(i=0;i<size;i++) {
x=2.0*i/(size-1.0)-1.0;
x2=x*x;
x3=x2*x;
x4=x3*x;
res[i].Zeroth=x;
res[i].First=1.5*x2-0.5;
res[i].Second=2.5*x3-1.5*x;
res[i].Third=4.375*x4-3.75*x2+0.375;
}
return res;
}
誰でも好奇心旺盛で念のために:私は、画像のルジャンドルモーメントを計算しています。しかし、私がこれをコンパイルしたいとき、コンパイラは "Field 'Zeroth'は解決できませんでした。他のフィールドと同じです。
私は私のファイルに他のすべてをコメントアウトするときにエラーがすでに発生して
#include "Legendre.hpp"
using namespace std;
int main(int argc, char* argv[])
{
}
のように私の主なルックスは、私が手にエラーが D
escription Resource Path Location Type
Field 'Third' could not be resolved Legendre.cpp /Finder line 108 Semantic Error
Field 'Second' could not be resolved Legendre.cpp /Finder line 107 Semantic Error
Field 'Zeroth' could not be resolved Legendre.cpp /Finder line 105 Semantic Error
Field 'First' could not be resolved Legendre.cpp /Finder line 106 Semantic Error
(ドン」と同じくらい簡単であるとき私が言ったように、私は多くのものをコメントアウトしました)
2つのことは私には非常に奇妙です:私はベクトルを宣言していないが、直接FourDoublesは
vector<FourDoubles> LegendreLookupTable(int size) {
...
FourDoubles test;
test.Zeroth=5.5;
...
}
それは完全に正常に動作します。また、私のメインファイルにすべてのものを直接書き込むと、
struct FourDoubles {
double Zeroth;
double First;
double Second;
double Third;
};
std::vector<FourDoubles> LegendreLookupTable(int size);
int main() {
...
}
vector<FourDoubles> LegendreLookupTable(int size) {
...
}
私はおそらくここに非常に基本的な何かが欠けていますが、それはメインファイルで宣言されていますしない限り、それは私の構造体のベクトルを扱うことができない理由を私は理解していません。啓発の助けがあれば深く感謝します。
'vector'をインクルードしましたか? – MikeCAT
[最小、**完全**、および検証可能な例](http://stackoverflow.com/help/mcve)を作成してください。また、可能な情報メモを含め、完全で完全な(修正なしの)エラー出力をコピーして(テキストとして)貼り付けます。 –
申し訳ありませんが、私はいくつかの説明を編集します、分を教えてください。しかし、コンパイル時に既にエラーが発生しているので、実際には完全な例を掲載しています。私はちょうど私のメインファイルが空である場合でも、構造体と関数以外のすべてをコメントアウトしました。しかし、私はエラー出力を追加します。 – JayD