面对c ++中的一些错误

时间:2016-05-09 23:38:41

标签: c++ templates c++11

我正在用c ++ 11编写程序,但我遇到了一些问题。我是c ++ 11编程的新手,而我之前习惯用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:在函数scenario1的第二行(int num_cashiers):';'之前的声明中的无效类型令牌

错误4:在函数scenario1的第三行(int num_cashiers):模板参数1无效

错误5:在函数scenario1的第三行(int num_cashiers):模板参数2无效

错误6:在函数scenario1的第三行(int num_cashiers):模板参数1无效//再次出现相同错误

错误7:在函数scenario1的第三行(int num_cashiers):模板参数2无效//再次出现相同错误

错误8:在函数scenario1的第三行(int num_cashiers):'('token

之前的声明中的无效类型

那么,我哪里错了,我该怎么做才能解决错误?

我将不胜感激任何帮助!

1 个答案:

答案 0 :(得分: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);

    ...

}