vector没有命名类型

时间:2014-03-22 12:25:38

标签: c++ vector prototype

我在标题中有这个错误: 这里有类变量声明和函数原型

#ifndef ROZKLADLICZBY_H
#define ROZKLADLICZBY_H


class RozkladLiczby{
public:
    RozkladLiczby(int);                  //konstruktor
    vector<int> CzynnikiPierwsze(int); //metoda
    ~RozkladLiczby();
};  


#endif

和班级身体:

#include "RozkladLiczby.h"
using namespace std;
#include <iostream>
#include <vector>




RozkladLiczby::~RozkladLiczby()         //destruktor
{}

RozkladLiczby::RozkladLiczby(int n){
int* tab = new int[n+1];
int i,j;

for( i=0;i<=n;i++)
    tab[i]=0;                  //zerujemy tablice

for( i=2;i<=n;i+=2)
    tab[i]=2;                  //zajmujemy sie liczbami parzystymi

for(i=3; i<=n;i+=2)
    for(j=i;j<=n;j+=i)         //sito erastotesa
        if(tab[j]==0)
            tab[j]=i;

}

   vector<int> RozkladLiczby::CzynnikiPierwsze(int m){
vector<int> tablica;
while(m!=1){
        tablica.push_back(tab[m]);
        m=m/tab[m];
}

return tablica;

}

第一块中的函数原型出了什么问题?为什么向量被告知不是一个类型?如果你能帮助我找到这个,我将不胜感激。

2 个答案:

答案 0 :(得分:3)

您的标头文件不包含矢量标头。添加#include <vector>到开始。

此外,您应该将其称为std::vector<int>而不是vector<int>,因为它属于std命名空间。在头文件中声明using namespace x;不是一个好习惯,因为它也会传播到其他文件。

答案 1 :(得分:2)

将您的标题文件更改为:

#ifndef ROZKLADLICZBY_H
#define ROZKLADLICZBY_H
#include <vector>

class RozkladLiczby{
public:
    RozkladLiczby(int);                  //konstruktor
    std::vector<int> CzynnikiPierwsze(int); //metoda
    ~RozkladLiczby();
private:
    int* tab;
};  


#endif