c ++如何声明函数返回对象的向量

时间:2013-11-24 12:25:22

标签: c++ object vector

我和函数一起努力应该返回对象的向量但是由于某种原因它总是抛出错误,告诉我的对象是未声明的标识符,这个对象的向量不是有效模板并指向我.h文件我在哪里声明功能。 我将适当解释这是什么意思以及如何解决这个问题。下面我从我的班级中放置代码并启动文件。

#ifndef SETUPW_H
#define SETUPW_H
#include"Square.h"
#include <iostream>
#include<string>
#include<fstream>
#include<vector>

std::vector<std::ifstream> allText();
std::ifstream loadTxt(std::string txt);
void printByLine(std::ifstream& txt);
std::vector<square> allSquares();//compiler points me to this line and that one bellow
void whichSQ(int sqNum, std::vector<square> sq);

#endif

和我的班级:

#ifndef SQUARE_H
#define SQUARE_H
#include"player.h"
#include"setupW.h"
#include<iostream>
#include<string>
#include<fstream>

class square
{
public:
     square(std::string name, int sqNumber, std::string description, int exits, int object);
    void loadSQ(std::ifstream& inFile);
    void printSQ();

private:
    int mSqNumber;
    std::string mName;
    std::string mDescription;
    int mExits;
    int mObject;
};

#endif

1 个答案:

答案 0 :(得分:1)

问题出现是因为你在这里有循环依赖。在square.cpp中,您首先要包含square.h。但square.h包含此行#include"setupW.h"(在您的类声明之前)。因此,您的职能声明将在您的square课程声明之前出现。这导致编译器在他读取square时嘀咕std::vector<square>未被声明(当时)。

最简单的解决方案是简单地删除include,因为据我所知,这是不必要的。