冗余命名空间声明向量

时间:2016-04-08 15:20:26

标签: c++ c++11

我是c ++的新手,所以有很多我不知道的事情,这就是为什么我想问一个有更多经验的人。

std::vector<CProp*> filter(const string &deptName, const string &city, const string &country)const {
        ...
}

我使用std命名空间,所以std ::应该是冗余的,但是如果我删除它,编译器会显示错误(首先是这个声明没有存储类或类型说明符?< / em>的)。这是为什么?我从来没有在课堂上的其他地方使用它,所以我也不应该使用std命名空间。

#include <cassert>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <iomanip>
#include <string>
#include <memory>
#include <vector>
#include <algorithm>
using namespace std;

class ClassName {
    public:
        ...
    private:
        vector<CProp*> vector;

        vector<CProp*> filter(const string &deptName, const string &city, const string &country)const {
            return nullptr;
        }
}

3 个答案:

答案 0 :(得分:5)

这定义了一个名为&#34; vector&#34;与std :: vector

冲突
private:
    vector<CProp*> vector;

答案 1 :(得分:0)

string还需要std::。所以你应该

std::vector<CProp*> filter(const std::string &deptName, const std::string &city, const std::string &country)const {
        ...
}

我同意所有评论者的说法&#34;不要使用using namespace std&#34;。

答案 2 :(得分:0)

  1. 您没有使用分号;关闭班级声明。这让编译器感到困惑。

  2. 您还需要编写void SomeFunctions();,因为这也会使编译器感到困惑。并且不要忘记为该函数添加定义,否则构建的链接阶段将失败。

  3. 您还需要一些运行的方式。为此,您需要main功能。或者这是别人的工作?