2

抱歉,如果这真的很愚蠢,但我就是不知道该怎么做。

我已经用 C# 编程多年了。今天我想我会第一次尝试一些 C++ 并安装 Qt for windows。

我正在尝试编写一个控制台应用程序,它输出来自 Project Euler 问题的结果。

设法通过将字符串值输出到控制台后,cout我想让我们创建一个类并将问题作为静态方法,就像我在 C# 中所做的那样......但我不知道如何调用我创建的类。到目前为止,我在网上搜索了一个多小时并没有给我任何有用的信息。

我有:

#include <iostream>
using namespace std;

void main()
{
    problems p = new problems ();

    std::cout << "Hello" << "\n";
}

这绝对行不通。我想是因为我需要一些usinginclude声明来访问课程......

类头:

#ifndef PROBLEMS_H
#define PROBLEMS_H

class problems
{
public:
    static long problem1();
};

#endif // PROBLEMS_H

和类cpp:

long problems::problem1()
{
        long output = 0;

        for (int i = 1; i < 1000; i++)
            if (i % 3 == 0 || i % 5 == 0)
                output += i;

        return output;
}

我在类声明中没有收到任何错误,所以我想这一定是正确的(但我当然不确定......)。最终,我想在 如何使这项工作中打印输出problem1()而不是“Hello” ?main()

4

2 回答 2

2

编辑这回答了原始问题,其中problems::problem1方法是静态的。

您不需要实例来调用静态方法:

#include <iostream>
#include "header_with_problems_declaration.h"    

void main()
{

    std::cout << problems::problem1() << "\n";
}

对于非静态方法,您可以执行类似的操作

#include <iostream>
#include "header_with_problems_declaration.h"    

void main()
{
    problems p
    std::cout << p.problem1() << "\n";
}

请注意,没有动态分配new. 在这种情况下,似乎没有理由这样做。

您还需要包含相关的头文件,编译实现,并将其链接到主文件中。如何做到这一点取决于您的构建系统。

在 C++ 中,除非静态方法确实与类相关,否则您将在命名空间中放置一个非成员函数:

namespace problems
{
  long problem1() { ..... }
}
于 2012-11-20T06:28:39.347 回答
1

为了包含 .h 文件并访问您需要的类#include

#include "problems.h"

New 创建一个指针,因此您需要通过指针访问该方法:

problems *p = new problems ();
long x = p->problem1();

您也可以像这样访问它:

problems p = problems();
long x = p.problem1();
于 2012-11-20T06:31:45.290 回答