C ++类文件不在Eclipse OS中运行的Linux Mars中运行二进制文件

时间:2016-06-20 18:21:36

标签: c++ linux eclipse binaries

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的类?)

1 个答案:

答案 0 :(得分:2)

您的主要功能在您的班级定义中。你需要移动};高于你的主要功能。我不知道eclipse,但它可能在这里看不到主函数,只有一个名为main()的类方法,它在C ++中不是什么东西。

顺便提一下,你的startNote方法似乎有一个bug。看起来key + triad()可以给出switch语句不包含的值。那么在这种情况下你的对象是如何构建的呢?