C++のソースコードをVisual Studio Expressを利用してコンパイル・実行したい
アルゴリズムとデータ構造という書籍を買い、下記よりC/C++のソースコードをダウンロードしました。
http://www.sbcr.jp/books/img/takarabako/
以前した質問(CのソースコードをVisual Studio Expressを利用してコンパイル・実行したい)の回答と同様に、
cl list2-6.cpp enter
とすると、
/out:list2-6.exe
list2-6.obj
LINK : fatal error LNK1561: エントリー ポイントを定義しなければなりません。
という表示が出てきて上手くコンパイルできません。
どこで問題が生じているか教えていただけないでしょうか?
ちなみに list2-6.cpp は以下のようなコードです。
// <C++版蔵書検索>
// ※インクルードファイルやmain()関数はC言語版と同じ
// 蔵書クラス
class CBook
{
public:
char *title;
char *author;
int bookID;
int available; /* 貸し出し中なら0,そうでなければ1 */
// 比較演算子のオーバロード
// sortbook()のなかでCBookどうしを比較
bool operator<(CBook&book)
{
return bookID<book.bookID;
}
bool operator>(CBook&book)
{
return bookID>book.bookID;
}
// int型へのキャストをオーバロード
// searchbook()のなかでkeyとbookIDを比較
operator int()
{
return bookID;
}
};
#define N 5
CBook*bookarray[N]; /* 蔵書データのポインタの配列 */
/* 蔵書のデータを初期化する */
void initdata()
{
int n;
for(n=0;n<N;++n)
bookarray[n]=new CBook;
bookarray[0]->title="book0";
bookarray[1]->title="book1";
bookarray[2]->title="book2";
bookarray[3]->title="book3";
bookarray[4]->title="book4";
bookarray[0]->author="author0";
bookarray[1]->author="author1";
bookarray[2]->author="author2";
bookarray[3]->author="author3";
bookarray[4]->author="author4";
bookarray[0]->bookID=1000;
bookarray[1]->bookID=502;
bookarray[2]->bookID=731;
bookarray[3]->bookID=628;
bookarray[4]->bookID=1;
bookarray[0]->available=1;
bookarray[1]->available=0;
bookarray[2]->available=0;
bookarray[3]->available=1;
bookarray[4]->available=1;
}
/* 蔵書データのメモリを解放 */
void cleanupdata()
{
int n;
for(n=0;n<N;++n)
delete bookarray[n];
}
/* 本のデータをbookIDの順に昇順でクイックソートする */
void sortbook(int bottom,int top)
{
int lower,upper;
CBook *div,*temp;
if(bottom>=top)
return;
div=bookarray[bottom]; /* 適当な基準値を選択 */
for(lower=bottom,upper=top;lower<upper;)
{
// オブジェクトの大小を直接比較
while(*bookarray[lower]<*div)
++lower;
while(*bookarray[upper]>*div)
--upper;
if(lower<upper)
{
/* データ(へのポインタ)の順番を入れ替える */
temp=bookarray[lower];
bookarray[lower]=bookarray[upper];
bookarray[upper]=temp;
++lower;
--upper;
}
}
sortbook(bottom,upper);
sortbook(upper+1,top);
}
/* booksのなかからbookIDがkeyと一致するデータをバイナリサーチで
検索して,その添え字を返す。見つからなければ-1を返す */
int searchbook(CBook *books[],int size,int key)
{
int left,mid,right;
left=0;
right=size;
while(left<right)
{
mid=(left+right)/2;
if(*books[mid]<key) // CBookのbookIDとkey を比較
left=mid+1;
else
right=mid;
}
if(*books[left]==key) // 同上
return left;
return -1; /* 見つからなかった場合 */
}
(追記)
// <C++版蔵書検索>
// ※インクルードファイルやmain()関数はC言語版と同じ
とあるように、この部分のコードが抜けていたのが原因でした。