Файлы классов C ++, не собирающие двоичные файлы в Eclipse Mars, работающие в ОС Linux

Новичок в C ++ и получение страшной ошибки «Binaries not found» при выполнении моего кода. Это происходит только тогда, когда я создал исходный файл, который включает код для класса. Когда я пишу программы, в которых нет класса, этого не происходит. Например, эта программа создает двоичные файлы, когда я создаю для него проект, и работает нормально:

#include <iostream>
using namespace std;

int main()
{
cout << "Hello World!";
}

Но когда я пытаюсь создать проект для этого файла, двоичные файлы не создаются:

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cstdio>
#include <algorithm>    // std::max

using namespace std;

class Measure {
public:
int key;
string note;

Measure() {
key = 13;
//Generate a random key
while(key > 12)
{
key = (rand() % 100) + 1;
}
note = startNote(key);
}

int getKey() {
return key;
}

string getNote() {
return note;
}

int triad(){
int first = 0;
int third = 0;
int fifth = 0;
while(first == third && first == fifth )
{
first = (rand() % 100) + 1;
third = (rand() % 100) + 1;
fifth = (rand() % 100) + 1;
}
if (first > third && first > fifth)
return 0;
else if(third  > first && third > fifth)
return 1;
else
return 2;
}

string startNote(int key){
switch(key + triad())
{
case 1 :
note = "A";
break;
case 2 :
note = "A#";
break;
case 3 :
note = "B";
break;
case 4 :
note = "C";
break;
case 5 :
note = "C#";
break;
case 6 :
note = "D";
break;
case 7 :
note = "D#";
break;
case 8 :
note = "E";
break;
case 9 :
note = "F";
break;
case 10 :
note = "F#";
break;
case 11 :
note = "G";
break;
case 12 :
note = "G#";
break;
}
return note;
}~Measure() {
// TODO Auto-generated destructor stub
}

int main()
{
cout << "Hello, world!" << endl;
return 0;
}

};

Я искал проблемы, похожие на мои, и решения не работают. Я попытался изменить мой двоичный парсер в меню свойств проекта на PE Windows Parser, Elf Parser и GNU Elf Parser. Это, кажется, не имеет значения. Почему Eclipse генерирует двоичные файлы при создании проекта для некоторых файлов, а не для других (например, мой файл выше, который содержит класс под названием Measure?)

-1

Решение

Ваша основная функция находится внутри определения вашего класса. Вам нужно переместить}; выше вашей основной функции. Я не знаю eclipse, но, скорее всего, здесь не видна основная функция, только метод класса с именем main (), чего нет в C ++.

Кстати, ваш метод startNote, похоже, содержит ошибку. Похоже, что key + triad () может дать значение, которое не охватывается вашим оператором switch. Итак, как ваш объект создается в этом случае?

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]