C/C++ の使い方を学んでいて、"otherPerson" (名、姓) が "person" (名) から継承するプログラムを作成しようとしています。私は人のcompareTo関数にこだわっています。person へのポインターの配列を名前のアルファベット順にソートすることになっています。(その考えを正しく表現したかどうかはわかりません)。最終的な目標は、配列のソートされた内容を出力することです。
私は得続けます:
エラー LNK2019: 未解決の外部シンボル "void __cdecl compareTo(class person * * const,int)" (?compareTo@@YAXQAPAVperson@@H@Z) 関数 _main で参照 1>c:\users\laur\documents\visual studio 2012 \Projects\Project1\Debug\Project1.exe: 致命的なエラー LNK1120: 1 つの未解決の外部
ビルドしようとすると。詳細についてはインターネットで調べましたが、インクルードステートメントが正しいと確信しています。この関数はメンバー関数として意図されています。
Test.cpp:
#include "stdio.h"
#include "otherPerson.h"
#include<iostream>
#include <string>
using namespace std;
void compareTo(person *array[7], int );
int main(){
int length = 7;
person* epicJourney[6];
//fill array
compareTo(epicJourney, length);
person.h:
#include <stdio.h>
#include <string>
using namespace std;
class person {
protected:
string firstName;
public:
person(string firstName);
virtual void setFirstName(string firstName);
virtual string getFirstName();
virtual void compareTo (person *array[7], int length);
virtual string toString();
};
person.cpp:
#include "person.h"
#include <string>
using namespace std;
person::person(string firstName){
this->firstName = firstName;
}
void person::setFirstName(string aName){
firstName =aName;
}
string person::getFirstName(){
return ((*this).firstName);
}
string person::toString(){
return (this->firstName);
}
void person::compareTo(person *array[], int length){
int i;
int j;
person *current;
for (i=1; i<length; i++){
current = array[i];
for (j=i; j>=1 && (current < array[j-1]); j--){
array[j] = array[j-1];
array[j-1] = current;
}
}
}