C ++ «вектор» не был объявлен в этой области - PullRequest
0 голосов
/ 28 апреля 2018

Каждый раз, когда я компилирую файл 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 голосов
/ 28 апреля 2018

Ваш файл function.cpp не может знать, что такое структура Stocks. Определите его в заголовочном файле:

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

И удалите его определение из main.cpp.

Также в вашем заголовочном файле вам нужно

#include <vector>

и относиться к параметру вектора как std::vector<Stocks> &Portfolios (лучше, чем using namespace std;)

Ваш синтаксис инициализации newstock{1,2,3} тоже выглядит неверно.

0 голосов
/ 28 апреля 2018

Вы используете 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...