Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Can';t返回头文件中声明的结构的向量_C++_Struct_Header Files - Fatal编程技术网

C++ Can';t返回头文件中声明的结构的向量

C++ Can';t返回头文件中声明的结构的向量,c++,struct,header-files,C++,Struct,Header Files,我希望getFeatures函数返回结构向量。我在头文件中声明的结构,但当我在.cpp文件中尝试写入函数名时,会出现未声明标识符错误。标识符已声明,我可以在其他函数中使用它。另外,当我编写return语句时,我得到一个向量类型到int错误的不可行的转换。在我的头文件中,我有一个函数原型,它声明我的函数应该返回一个结构类型的向量,而不是int类型的向量。到底发生了什么 #include "Feature_Builder.h" Feature_Builder::Feature_Builder()

我希望getFeatures函数返回结构向量。我在头文件中声明的结构,但当我在.cpp文件中尝试写入函数名时,会出现未声明标识符错误。标识符已声明,我可以在其他函数中使用它。另外,当我编写return语句时,我得到一个向量类型到int错误的不可行的转换。在我的头文件中,我有一个函数原型,它声明我的函数应该返回一个结构类型的向量,而不是int类型的向量。到底发生了什么

#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(){…}

我实际上不会以这种方式返回向量。。。你应该返回一个指针。是的,这就成功了。我不知道你需要指定范围。谢谢