2011-01-31 3 views
3

Привет, ребята, я не могу получить мою следующую программу на C++, скомпилированную в Visual Studio 2010. У меня уже есть рабочая сборка того же кода, поэтому я знаю, что код верен. Но я понятия не имею, с чем и как он был скомпилирован.Ошибка при компиляции C++-программы в Visual Studio 2010

Так что я был бы признателен, если кто-то может просто скопировать код и попытаться скомпилировать его в VS 2010.

code-

http://codepad.org/4VtrVBdK

новый - хорошо сделал редактирование в соответствии с комментарии ниже. Теперь единственные проблемы, которые, похоже, остались, связаны с вызовами перегруженных функций ... так как это сделать?

+2

Если у вас есть ошибки компиляции, вы должны нарезать + вставить их в свой вопрос. –

+0

fyi, есть лучшие способы вставки кода примера. например этот сайт не только выделяет код, но и компилирует его и запускает его для вас. http://codepad.org/cXvCUcPV –

+0

Я получаю очень общие ошибки, я думаю, кто-то должен будет скомпилировать код, чтобы увидеть и понять ошибки. – digster

ответ

0

Похоже, вы пропустили using namespace std;

+0

blimey ... на самом деле я пропустил копирование с использованием пространства имен std; но с ошибкой на моей стороне ..... все еще не могу ее скомпилировать даже с использованием пространства имен ... – digster

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]); 
} 

Во втором цикле for, i является необъявленным. Я подозреваю, что исходным компилятором был VC6, что позволило это.

Другой проблемой является то, как вы звоните 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" 

Ни один из них не включает в себя являются частью стандарта. Если вы можете заставить их компилировать, то только потому, что ваш компилятор предвосхитил вашу ошибку. Но это все еще ошибка.

+0

Я бы предпочел '2.0' вместо' (double) 2'. Чем меньше бросков, тем лучше, как правило. Но бит сдвиги будет еще лучше. –

+0

Согласен, я отредактирую –

+0

hmmm..yeah..got на телефоне с коллегой, который прислал мне программу ... оказывается, что она была скомпилирована в vc6 ... теперь дело в том, как я могу ее скомпилировать в сравнении с 2010 ... im usin выиграть 7 и поэтому не может заставить vc6 нормально работать в нем ... – digster

Смежные вопросы