获取方法在 C++ 中未定义

Getting method is undefined in C++

我正在尝试根据 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 条件下测试的方法都返回“包含的方法:未找到标识符”和“包含的方法 : 标识符未定义

这是包含的 class.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++ 编程的新手,所以我还不知道任何深入的知识。

这些方法在 Utility class 中,但您是从 main 调用它们而没有 Utility 的实例,因此 compiler/linker 正在寻找不存在的方法。

您可以使它们成为 Utility 的静态成员,然后您只需要确定调用的范围(例如 Utility::IsPrime(x))并且实际上没有 Utility 的实例。

正如@Amadeus 在评论中提到的:如果 Utility 中的所有内容都是 "stateless" 并且可以是静态的,那么也许您应该将所有 Utility 方法放在命名空间中而不是 class.