gpt4 book ai didi

c++ - 对 main() 中函数的 undefined reference

转载 作者:太空宇宙 更新时间:2023-11-04 15:19:34 24 4
gpt4 key购买 nike

我试图在单独的文件上制作一个程序。不幸的是,我在尝试构建代码时遇到了错误。它指向对构造函数、析构函数和函数 CzynnikiPierwsze 的 undefined reference 。所以我决定将整个代码放在一个代码中。 main() 函数中仍然存在问题:对“CzynnikiPierwsze(int)”的 undefined reference 有什么想法吗?这是完整的代码:

#include <iostream>
#include <cctype>
#include <vector>


using namespace std;
vector<int> CzynnikiPierwsze(int);


class NieprawidlowaDana //wyjatki
{};
class SpozaZakresu
{};



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

////////////////类的正文////////////////////////////////////

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;

}


////////////////////////END OF THE BODY//////////////////////////////




int parsuj(char* argz){
int i=0;
while(argz[i] != '\0'){ //funckja ktora konwertuje na int i sprawdza czy wprowadzaony zostal string
if( !isdigit(argz[i]))
throw NieprawidlowaDana();
i=i+1;
}
int x = stoi(argz);
if (x >= 2)
return x;
else
throw SpozaZakresu();

}






//////////////////GLOWNY BLOK///////////////////////////////////////

int main(int argc,char* argv[]){


vector<int> tablica,p;
int i,n;
int max;

for( i=1;i<=argc-1;i++){
n = parsuj(argv[i]);
tablica.push_back(n);
}

max=tablica[0];

for(i=1; i<=argc-1;i++){
if(tablica[i]>max)
max=tablica[i]; } // sprawdzamy max

RozkladLiczby odp = RozkladLiczby(max); //utwoorzylismy obiekt z maxa


for(unsigned int i=0;i<=tablica.size()-1;i++){
p=CzynnikiPierwsze(tablica[i]);
cout<<tablica[i]<<" = ";
int x= p[0];

int licznik = 1;
for(unsigned int j=1;j<=p.size()-1;j++){
if(x==p[j])
licznik++;
else if(licznik!=1)
cout<<x<<"^"<<licznik<<"*";
else
cout<<x<<"*";
}
cout<<endl;

}

return 0;

}

如果你能解决这个问题,我将不胜感激。

最佳答案

您已声明全局函数 vector<int> CzynnikiPierwsze(int);但是您没有在程序的任何地方定义它。在您的主体中,您调用的是全局函数,而不是您的类(class)成员。

关于c++ - 对 main() 中函数的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22578478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com