我正在尝试从C ++教程创建程序。但导师使用的IDE是VS2010,而我正在使用VS2017。我注意到一些语法(sp。)略有不同。我不确定这个错误是什么,我尝试过搜索。
这是主要的.cpp:
#include "stdafx.h"
#include <iostream>
#include "Utility.h"
using namespace std;
int main()
{
int x;
cout << "Enter a Number: " << endl;
cin >> x;
if (IsPrime(x))
cout << x << " is prime" << endl;
else
cout << x << " is not prime" << endl;
if (Is2MorePrime(x))
cout << x << "+2 is prime" << endl;
else
cout << x << "+2 is not prime" << endl;
return 0;
}
在if条件下测试的方法都返回“包含的方法:未找到标识符”和“包含的方法:标识符未定义”
这是包含的类.cpp:
#include "stdafx.h"
#include "Utility.h"
#include <iostream>
using namespace std;
bool Utility::IsPrime(int num)
{
bool prime = true;
for (int i = 0; i <= num / i; i++)
{
int factor = num / i;
if (factor*i == num)
{
cout << "Factor Found: " << factor << endl;
prime = false;
break;
}
}
return prime;
}
bool Utility::Is2MorePrime(int num)
{
num += 2;
return IsPrime(num);
}
这是包含的头文件:
#pragma once
class Utility
{
bool IsPrime(int primeNum);
bool Is2MorePrime(int morePrime);
};
我还是C ++编程的新手,所以我不知道任何密集的东西。
答案 0 :(得分:0)
这些方法在Utility
类中,但是您从main
调用它们而没有Utility
的实例,因此编译器/链接器正在寻找不存在的方法。 / p>
您可以将它们设为Utility
的静态成员,然后您只需要调整范围(例如Utility::IsPrime(x)
),而不是实际拥有Utility
的实例。
如@Amadeus在评论中所提到的:如果Utility
中的所有内容都是“无状态”并且可以是静态的,那么也许您应该将所有Utility方法放在命名空间而不是类中。