0

假设我想要实现合并排序的mergesort.cpp。所以在我的 .cpp 文件中,我有类似的内容:

int * mergesort(int * a, int lo, int hi)
{
  //mergesort
}

在标题 mergesort.h 中,我会:

public static int mergesort(int *, int, int);

然后在另一个源文件中,比如包含 mergesort.h 的 main.cpp,我想调用函数 mergesort 而不必创建任何对象实例。

int a [10];
mergesort::mergesort(a,0,9);

好的,但这不起作用,因为我不知道正确的语法,而且我真的不知道用什么术语来问这个问题,但希望它很清楚。

4

3 回答 3

1

我认为您正在考虑使用 Java,而不是 C++。在您想要的标题中,只需:

extern int *mergesort(int *, int int);

在您的 main.cpp 中,您只需将其称为:

mergesort(a, 0, 9);
于 2013-07-06T17:33:42.283 回答
1

在这种情况下,您甚至不需要静态修饰符。

//mergesort.h
#ifndef MERGESORT_H
#define MERGESORT_H
int* mergesort(int*, int, int);
#endif

和...

//mergesort.cpp
#include "mergesort.h"
int* mergesort(int * a, int lo, int hi)
{
   // do your thing
}

后来:

// some other file
#include "mergesort.h"

int main()
{
    int a [10];
    mergesort(a,0,9);    
    return 0;
} 
于 2013-07-06T17:37:03.080 回答
0

就放

int mergesort(int *, int, int);

在标题中,然后调用

mergesort(a,0,9);

从你的main.cpp,你会没事的。

我假设您来自真正的面向对象语言(例如 Java)背景,在这种语言中,一切都需要成为对象。在 C++ 中,独立函数非常好。也不需要 public 和 static 关键字,因为它们与类有关。

我强烈建议您阅读 C 或 C++ 书籍。看这里

于 2013-07-06T17:32:58.670 回答