C ++'vector'未在此范围内声明

时间:2018-04-28 03:44:18

标签: c++ vector scope

每次编译function.cpp文件时都会收到错误,说明库存和newStock未在此范围内声明。我正在尝试在向量中使用结构。谢谢你的帮助。

这是main.cpp文件

#include <fstream>
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include <sstream>
#include <vector>
using namespace std;

struct Stocks
{
    int one;
    int two;
    int three;
};

vector<Stocks> portfolio;

#include "testProject2.h"

int main()
{
buyStock(portfolio);

} 

这是头文件。

#include <iostream>

void buyStock(vector<Stocks>& Portfolios);

这是function.cpp文件

#include <iostream>
#include <vector>
#include "testProject2.h"

void buyStock(vector<Stocks>& Portfolios)
{
Stocks newStock;
newStock{1,2,3};
Portfolios.push_back(newStock);
}

2 个答案:

答案 0 :(得分:1)

您的function.cpp文件无法知道Stocks结构是什么。在头文件中定义它:

struct Stocks {
   int one;
   int two;
   int three;
};

从main.cpp中删除它的定义。

同样在头文件中,您需要

#include <vector>

并将vector参数称为std::vector<Stocks> &Portfolios(优于using namespace std;

您的初始化语法newstock{1,2,3}看起来也不正确。

答案 1 :(得分:0)

您在头文件中使用vector而未定义它。

尝试将头文件更改为:

#include <vector>
#include <Stocks.h> // name of .h file where Stocks is defined

void buyStock(std::vector<Stocks>& Portfolios);

// OR

using namespace std::vector;
void buyStock(vector<Stocks>& Portfolios);