2016-05-09 2 views
-2

Я пишу программу в C++ 11, и у меня возникли некоторые проблемы. Я новичок в программировании на C++ 11, в то время как раньше я разрабатывал в c, но я хочу быть знакомым с новыми возможностями C++.Облицовка некоторых ошибок в C++

я представлю вам ниже спорном части кода, объясняющей, где находятся ошибки, и какие из них я получаю.

#include <iostream> 
#include <ctime> 
#include <cstdio> 
#include <cstring> 
#include <cstdlib> 
#include <vector> 
#include <map> 
#include <algorithm> 

using namespace std; 

// A struct describing a product. 
typedef struct Products 
{ 
    string category; 
    string name; 
    float price; 
} Product; 

inline void scenario1(int num_cashiers) 
{ 
    extern vector<Product> products; // It is a vector(a pseudo-second dimension) of products which will be used for each customer 
    extern vector<vector<Product> products> customers; // A vector containing all customers 
    vector<vector<vector<Product> products> customers> cashiers(num_cashiers); // A vector describing the supermarket cashiers declaring a queue of customers for each cashier 

    ... 

} 

Ошибка 1: На второй строке функции scenario1 (Int num_cashiers): аргумент шаблона 1 недействительна

Ошибка 2: На второй строке функции scenario1 (INT num_cashiers): аргумент шаблона 2 недействителен

Ошибка 3: во второй строке сценария функции1 (int num_cashiers): недопустимый тип объявления до ';' Маркер

Ошибка 4: На третьей строке функции scenario1 (интермедиат num_cashiers): аргумент шаблона 1 недействительна

Ошибка 5: В третьей строке функции scenario1 (Int num_cashiers): аргумент шаблона 2 недействительный

ошибка 6: на третьей строке функции scenario1 (интермедиат num_cashiers): аргумент шаблона 1 недействительна // Те же ошибки снова

ошибка 7: на третьей строке функции scenario1 (INT num_cashiers) : аргумент шаблона 2 недопустим // Повторная ошибка

Ошибка 8: На третьей строке функции scenario1 (INT num_cashiers): недопустимый тип в объявлении перед «(» лексем

Итак, где я не прав и что я должен сделать, чтобы исправить ошибки?

Буду признателен за любую помощь!

+2

Я не уверен, что в C++ 11 вы можете поместить имена в декларации, как вы делали. shoukd быть подобным этому 'vector >> cashiers' –

+0

Что это такое -' vector products> '? – Praetorian

+4

Вернитесь к нам, когда вы получите что-то, чтобы скомпилировать –

ответ

4

Я не уверен, что в C++ 11 вы можете поместить имена в декларацию, как вы это делали. Также как @EdHeal прокомментировал, не следует использовать extern в встроенной функции.

Это должно работать:

inline void scenario1(int num_cashiers) // why inline? 
{ 
    vector<Product> products; 
    vector<vector<Product>> customers; 
    vector<vector<vector<Product>>> cashiers(num_cashiers); 

    ... 

} 
+0

Я бы предположил, что это все равно не было бы включено –

+0

@E Видите, позвольте ему говорить –

+0

Прежде всего перед вышеупомянутыми ошибками у меня появилось еще несколько. Чтобы решить их (или, возможно, избежать их), я обнаружил, что мне пришлось объявить первые два вектора как extern (мне тоже не нравятся внешние или статические ключевые слова). Более того, я написал вышеприведенную часть кода (например, @FirstStep написал), и ошибки, о которых я упоминал в своем сообщении, произошли. Наконец, я использую ключевое слово inline для оптимизации. –