【问题标题】:How to define a function in C++ in one file and call it in another one?如何在一个文件中用 C++ 定义一个函数并在另一个文件中调用它?
【发布时间】:2014-04-17 14:31:44
【问题描述】:

如何在一个文件中正确定义 C++ 函数并在不使用头文件的情况下从另一个文件中调用它?我会使用头文件,但我的教授告诉我们不要。我的文件一直有很多编译问题,处理我的功能不存在。任何帮助表示赞赏。我的程序应该使用选择排序和降序使用冒泡排序对数组进行升序排序。

这是我目前所拥有的。这是我的司机。

驱动程序.cpp

#include "selection.cpp"
#include "bubble.cpp"

#define ArraySize 10 //size of the array
#define  Seed  1 //seed used to generate random number
int values[ArraySize];

int main(int argc, char** argv) {

    int i;



    //seed random number generator
    srand(Seed);

    //Fill array with random integers
    for(i=0;i<ArraySize;i++)
        values[i] = rand();

    cout << "\n Numbers in array." << endl;

    for(i=0;i<ArraySize; i++)
        cout << &values[i]<< "\n";

    int* array_p[] = values[]; 

    //Function call for BubbleSort
    bubblesort(array_p[], ArraySize);  

    for (i=0;i<ArraySize; i++)
        cout << &values[i] << "\n";


 //SelectionSort
    selectionsort(array_p, ArraySize);

    cout << "Numbers in ascending order." << endl;

    for (i=0;i<ArraySize; i++)
        cout << &values[i] << "\n";
    return 0;
}

气泡.cpp

#include <iostream>


int* bubblesort(int values[], int size) {

    int i, j;

    for(i=0;i<size-1;i++){
        for(j=0; j<size-1; j++){
             if(values[j+1] > values[j]){
                int temp = values[j];
                values[j] = values[j+1];
                values[j+1] = temp;

                 return values;

             }
        }
    }
};

selection.cpp

#include <iostream>



int *selectionsort(int values[], int size){


    for(int i=0; i<size-1; i++){
        for(int j=0; j<size; j++){
            if(values[i] < values[j]){
                int temp = values[i];
                values[i] = values[j];
                values[j] = temp;


                return values;
            }
        }

    }
};

【问题讨论】:

    标签: c++ function sorting bubble-sort selection-sort


    【解决方案1】:

    随便写

    int* bubblesort(int values[], int size);
    

    在您要调用该函数的其他源文件中(在调用之前)。

    请注意,如果您不使用头文件,那么您必须手动注意,如果您在一个文件中更改返回类型或参数列表,则在所有文件中都进行相同的更改。

    其他一些事情:

    您可能需要考虑将您的 return 语句移到函数的末尾,而不是返回您进行第一次交换的那一刻。或者更好的是,让函数返回 void - 调用者已经知道值,因为他刚刚调用了该函数,因此再次返回它没有任何意义。

    cout &lt;&lt; &amp;values[i]&lt;&lt; "\n"; 输出每个值的地址,我猜你想输出值。

    int* array_p[] = values[]; 和它后面的行是语法错误,我想你的意思是:int *array_p = values; bubblesort(array_p, ArraySize);

    【讨论】:

    • 好的,非常感谢。还有一个问题。 (希望)如何在冒泡排序和选择排序函数中使用驱动程序中定义的相同数组?
    • 这就是你目前正在做的事情
    • 好的,谢谢。所以这意味着我可以摆脱 int*array_p = values; 行,因为我已经指向其他两个文件中的函数?
    • 是的,你可以去掉那条线,并使用values 作为你传递给函数的东西。 (无论如何,它都会在“幕后”通过指针传递)。
    猜你喜欢
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 2022-08-18
    • 1970-01-01
    • 2017-09-01
    • 2022-11-03
    • 2017-11-30
    相关资源
    最近更新 更多