2

次の C++ プログラムを Visual Studio 2010 でコンパイルできません。既に同じコードの作業ビルドがあるので、コードが正しいことはわかっています。しかし、私はそれが何をどのようにコンパイルしたのかわかりません。

そのため、誰かがコードをコピーして VS 2010 でコンパイルしていただければ幸いです。

コード:

http://codepad.org/4VtrVBdK

新しい:

わかりました、以下のコメントに従って編集を行いました。現在残っていると思われる唯一の問題は、オーバーロードされた関数の呼び出しに関連しています。では、どうすればいいのでしょうか?

4

2 に答える 2

2

だから私はコードが正しいことを知っています

あなたが「知っている」ことは嘘です。コードは多くの点で間違っています。以下はほんの一例です:

for(unsigned int i=0;i<GPNO;i++)    //SORTING ACCORDING TO FITNESS
    for(unsigned int j=i+1;j<GPNO;j++)
        if((gp[i]->fitness)>(gp[j]->fitness))
        {
            gp[i]->mycopy(tmp);
            gp[j]->mycopy(gp[i]);
            tmp->mycopy(gp[j]);
        }



for(i=1;i<=no;i++)
{
    gp[i]->mycopy(gp[GPNO-i]);
}

2 番目のforループでiは、宣言されていません。元のコンパイラは VC6 だったのではないかと思います。

もう 1 つの問題は、呼び出し方ですpow。たとえば、次のように、マクロを使用して呼び出します (これは明らかに悪意のあるものです)。

pf[i].frq+=(unsigned int)pow(2,2*PF-1);

また、コンパイラは、どのバージョンをpow念頭に置いていたのかを知りません。この目的のために悪であるマクロの好例。これを行う:

pf[i].frq+=(unsigned int)pow(2.0,2*PF-1);

または、いっそのこと、マクロを取り除きます。

コードが間違っている別の例:

#include "stdlib.h"
#include "conio.h"
#include "math.h"

これらのインクルードはどれも標準の一部ではありません。それらをコンパイルできる場合、それはコンパイラーがあなたの間違いを予期していたからです。しかし、それはまだ間違いです。

于 2011-01-31T20:13:15.723 に答える
0

行方不明のようですusing namespace std;

于 2011-01-31T20:05:55.537 に答える