假设我想要实现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);
好的,但这不起作用,因为我不知道正确的语法,我真的不知道用什么术语来提问,但希望很清楚。
答案 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。