0

我正在尝试从 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++ 编程的新手,所以我还不知道任何密集的东西。

4

1 回答 1

0

这些方法在类中,但您在没有实例的情况下Utility调用它们,因此编译器/链接器正在寻找不存在的方法。mainUtility

您可能可以将它们Utility设为 的静态成员,然后您只需要限定调用范围(例如Utility::IsPrime(x)),而实际上并没有Utility.

正如@Amadeus 在评论中提到的那样:如果其中的所有内容Utility都是“无状态的”并且可以是静态的,那么也许您应该将所有 Utility 方法放在命名空间而不是类中。

于 2017-04-10T22:51:55.143 回答