繁体   English   中英

向量未命名类型

[英]vector does not name a type

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

#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;

}

第一块中的函数原型有什么问题? 为什么告诉向量不是类型? 如果您能帮助我找出这一点,我将不胜感激。

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

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

将头文件更改为:

#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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM