C++ 多函数定义错误

C++ 多函数定义错误,c++,class,function,C++,Class,Function,我有一个头文件和一个我试图构建的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

我有一个头文件和一个我试图构建的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]);  
    }    
}
#包括“SelectionSort.h”
void SelectionSort::Fill(){
缓冲区=新字符[大小];

对于(int i=0;i,一旦您获得要编译的代码,就会出现许多逻辑错误(请参阅注释):

void SelectionSort::Sort()
{       
int最低;
对于(int i=0;ilowest)lowest=j;//将数据元素与索引进行比较,则比较运算符会反转
交换(缓冲区[最低],缓冲区[i]);
}
} 

您是如何编译/链接此文件的?看起来您试图链接同一个对象文件两次…为了跟进GWW,您是如何链接此文件的?您的makefile有一个错误。请将其添加到问题中。如果您没有使用makefile,您使用的是什么IDE?顺便说一句,默认构造函数的定义丢失。在另一个构造函数中,您没有初始化缓冲区。
使用名称空间std;
不应该是头文件的一部分!可能您包含了(两次).cpp文件?
#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 */
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]);
     }
}