我有一个标题,还有一个我试图构建的cpp文件。
.cpp文件:
#include "SelectionSort.h"
void SelectionSort::Fill(){
Buffer = new char[Size];
for(int i=0;i<Size;i++){
Buffer[i] = rand() % 10;
}
}
void SelectionSort::PrintOut(){
for(int i=0;i<Size;i++){
cout<<Buffer[i]<<endl;
}
}
void SelectionSort::Sort(){
int lowest;
for(int i=0;i<Size;i++){
lowest=i;
for(int j=i;j<(Size-i);++j)
if(Buffer[j]>lowest) lowest = j;
swap(Buffer[lowest], Buffer[i]);
}
}
.h文件:
#ifndef SELECTIONSORT_H
#define SELECTIONSORT_H
#include <algorithm>
#include <stdlib.h>
#include <iostream>
using namespace std;
class SelectionSort {
public:
SelectionSort();
SelectionSort(int S){Size= S;}
void Fill();
void PrintOut();
void Sort();
private:
int Size;
char * Buffer;
};
#endif /* SELECTIONSORT_H */
但是我得到了这些错误:
SelectionSort.cpp:17:'SelectionSort :: PrintOut()'的多重定义 SelectionSort.cpp:17:首先在此定义
SelectionSort.cpp:23:'SelectionSort :: Sort()'的多重定义 SelectionSort.cpp:23:首先在此定义
SelectionSort.cpp:10:'SelectionSort :: Fill()'的多重定义 SelectionSort.cpp:10:首先在这里定义,
我如何错误地定义我的功能?
我正在使用netbeans及其通用make / build设置。我一直想要更多地了解make文件,我应该尝试编写自己的文件并解决问题吗?
答案 0 :(得分:1)
一旦你的代码被编译,你就会遇到一些逻辑错误(见评论):
void SelectionSort::Sort()
{
int lowest;
for(int i = 0; i < Size; i++)
{
lowest = i;
for(int j = i; j < (Size - i); ++j) // j should terminate at the end of Buffer, not one before the end
if(Buffer[j] > lowest) lowest = j; // comparing a data element to an index, comparison operator reversed
swap(Buffer[lowest], Buffer[i]);
}
}