我想创建一个调用函数的源文件,而不必创建一个对象

时间:2013-07-06 17:30:45

标签: c++ static header

假设我想要实现mergesort的mergesort.cpp。所以在我的.cpp文件中,我有类似的东西:

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

在标题mergesort.h中,我会:

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

mergesort(a, 0, 9);

答案 1 :(得分: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;
} 

答案 2 :(得分:0)

刚刚放

int mergesort(int *, int, int);
在标题中

然后调用

mergesort(a,0,9);

来自main.cpp,你会没事的。

我认为你来自一个真正的面向对象语言(如Java)背景,其中一切都需要成为一个对象。在C ++中,一个独立的功能非常好。也不需要public和static关键字,因为那些与类有关。

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