C++ Can';t返回头文件中声明的结构的向量
我希望getFeatures函数返回结构向量。我在头文件中声明的结构,但当我在.cpp文件中尝试写入函数名时,会出现未声明标识符错误。标识符已声明,我可以在其他函数中使用它。另外,当我编写return语句时,我得到一个向量类型到int错误的不可行的转换。在我的头文件中,我有一个函数原型,它声明我的函数应该返回一个结构类型的向量,而不是int类型的向量。到底发生了什么C++ Can';t返回头文件中声明的结构的向量,c++,struct,header-files,C++,Struct,Header Files,我希望getFeatures函数返回结构向量。我在头文件中声明的结构,但当我在.cpp文件中尝试写入函数名时,会出现未声明标识符错误。标识符已声明,我可以在其他函数中使用它。另外,当我编写return语句时,我得到一个向量类型到int错误的不可行的转换。在我的头文件中,我有一个函数原型,它声明我的函数应该返回一个结构类型的向量,而不是int类型的向量。到底发生了什么 #include "Feature_Builder.h" Feature_Builder::Feature_Builder()
#include "Feature_Builder.h"
Feature_Builder::Feature_Builder()
{
int input;
vector<int> intImageVals, temp;
fstream file;
file.open("Integral_Images.txt", ios::in);
if (file.fail())
{
cerr << "File not open!\n";
exit(EXIT_FAILURE);
}
for (int i=0; i<12876; i++)
{
file >> input;
while (input != -1)
{
intImageVals.push_back(input);
file >> input;
}
buildFeatureOne(intImageVals);
buildFeatureTwo(intImageVals);
buildFeatureThree(intImageVals);
buildFeatureFour(intImageVals);
featureIndex = 0;
intImageVals.clear();
}
}
/*****************************************************************************
This is the function with errors! XCode says featureValues is an undeclared
identifier and that features should be of type int!
*****************************************************************************/
vector<featureValues> Feature_Builder::getFeatures()
{
return features;
}
#包括“Feature_Builder.h”
要素构建器::要素构建器()
{
int输入;
向量亲密度,温度;
流文件;
打开(“Integral_Images.txt”,ios::in);
if(file.fail())
{
cerr输入;
while(输入!=-1)
{
亲密度。推回(输入);
文件>>输入;
}
建筑特征一(亲密度);
建筑特征二(亲密度);
建筑特征树(亲密度);
建筑特征四(亲密度);
特征指数=0;
expndtw-1.clear();
}
}
/*****************************************************************************
这是有错误的函数!XCode表示featureValues是未声明的
标识符,并且该功能应为int类型!
*****************************************************************************/
向量特征构建器::getFeatures()
{
返回特性;
}
和我的头文件
#ifndef Facial_Learner_Feature_Builder_h
#define Facial_Learner_Feature_Builder_h
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
class Feature_Builder
{
private:
void buildFeatureOne(vector<int>);
void buildFeatureTwo(vector<int>);
void buildFeatureThree(vector<int>);
void buildFeatureFour(vector<int>);
struct featureValues
{
private:
vector<int> vals;
public:
inline void pushValue(int value)
{vals.push_back(value);}
inline int getValue(int i)
{return vals[i];}
};
int featureIndex;
vector<featureValues> features;
public:
Feature_Builder();
vector<featureValues> getFeatures();
};
#endif
#如果没有面部(学习者)功能(构建者)
#定义面部特征、学习者特征、构建者特征
#包括
#包括
#包括
使用名称空间std;
类特征生成器
{
私人:
void buildFeatureOne(向量);
void buildfeature2(向量);
void buildFeatureTree(向量);
void buildFeatureFour(向量);
结构特征值
{
私人:
向量VAL;
公众:
内联无效值(int值)
{vals.push_back(值);}
内联int getValue(inti)
{返回VAL[i];}
};
国际特征指数;
矢量特征;
公众:
特征构建器();
向量getFeatures();
};
#恩迪夫
您需要内部结构的正确范围:
vector<Feature_Builder::featureValues> Feature_Builder::getFeatures() { ... }
vector Features_Builder::getFeatures(){…}
我实际上不会以这种方式返回向量。。。你应该返回一个指针。是的,这就成功了。我不知道你需要指定范围。谢谢