我现在已经弄清楚出了什么问题。这是一个问题,因为代码块根本无法正常工作(或者某些设置我在没有意识到的情况下进行了更改)。使用默认设置启动新项目,复制/粘贴让我完成了它。如果有人想要阅读它,原始问题仍然写在下面。
我在构建使用Codeblocks 13.12创建的C ++项目时遇到了一些麻烦。当我尝试构建它时,我收到了错误消息
对'Prime_functions :: isprime()'
的未定义引用
我已经看过这个问题(或者之前提到过的非常相似的问题),但我看到的解决方案要么比我们帮助的要困难,要么就是直接做了什么。
以下是此项目中的文件:
的main.cpp
#include "Prime_functions.h"
#include <iostream>
#include <string>
#include <cmath>
#include <math.h>
int main()
{
Prime_functions bo;
bo.isprime();
std::cout << bo.factor;
return 0;
}
Prime_functions.h
#ifndef PRIME_FUNCTIONS_H
#define PRIME_FUNCTIONS_H
class Prime_functions
{
public:
int isprime();
int primedetector();
int primelist();
int max_and_min_prime();
int factor;
protected:
private:
};
#endif // PRIME_FUNCTIONS_H
Prime_functions.cpp
#include "Prime_functions.h"
#include <iostream>
#include <string>
#include <cmath>
#include <math.h>
int factor = 0;
int primedetector(int a){
int n = 2;
while(2*n <= a+1){
if(a%n == 0){
factor = n;
return a;
n = a+1;
}
if (a-1 < 2*n){
return 0;
}
n++;
}
}
int isprime(){
std::cout << "Enter a number and check if it's prime." << std::endl;
int a;
std::cin >> a;
std::cout << std::endl;
if(primedetector(a) == a){
std::cout << a << " is not a prime number. It is divisible by " << factor << std::endl;
}else if(primedetector(a) == 0){
std::cout << a << " is a prime number. " << std::endl;
}
std::cout << std::endl;
}
int primelist(){
int p,q;
std::cout << "Enter the lower limit for this search" << std::endl;
std::cin >> p;
std::cout << "Enter the upper limit for this search" << std::endl;
std::cin >> q;
std::cout << "----------" << std::endl;
if(p>q){
int q2 = q;
int p2 = p;
q = p2;
p = q2;
}
if(p<2){
p=2;
}
for(int z=p; z<q; z++){
if(primedetector(z)==0){
std::cout << z << std::endl;
}
}
}
int max_and_min_prime(){
int p,q;
std::cout << "Enter the lower limit for this search" << std::endl;
std::cin >> p;
std::cout << "Enter the upper limit for this search" << std::endl;
std::cin >> q;
std::cout << "----------" << std::endl;
if(p>q){
int q2 = q;
int p2 = p;
q = p2;
p = q2;
}
if(p<2){
p=2;
}
int current = 0;
for(int z=p; z<q; z++){
if(primedetector(z)==0){
if(current == 0){
current = z;
std::cout << "The prime smallest number in this range is " << current;
}
current = z;
}
}
std::cout << " and the largest is " << current << ".\n\n";
}
有些事情可能会或可能不会很重要:
bo.isprime();
删除行main.cpp
,它将进行编译,因此错误可能与此相关。用其他功能替换它似乎会导致同样的问题。std::cout << bo.factor;
放在那里检查事情是否正常运行。但是,它打印出1972859722而不是指定的值; 0 Prime_functions.cpp
文件中的函数作为独立文件正常工作(我之后删除了int main()
函数,但没有做任何其他更改。)int functions
中的Prime_finctions.cpp
添加返回值不会做任何事情。使它们无效也无济于事。这几乎是我现在能想到的所有相关信息。