C ++的新手,并且找不到可怕的"二进制文件"执行我的代码时出错。只有在我创建了包含Class代码的源文件时才会发生这种情况。当我编写不包含类的程序时,这不会发生。例如,当我为它构建项目并运行正常时,该程序会创建二进制文件:
#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的类?)
答案 0 :(得分:2)
您的主要功能在您的班级定义中。你需要移动};高于你的主要功能。我不知道eclipse,但它可能在这里看不到主函数,只有一个名为main()的类方法,它在C ++中不是什么东西。
顺便提一下,你的startNote方法似乎有一个bug。看起来key + triad()可以给出switch语句不包含的值。那么在这种情况下你的对象是如何构建的呢?