因此,在这个项目中,我要开发一个二进制表达式树,并使用树后缀表达式转换成缀表达式。除了一个或两个我尚未完成的功能之外,所有东西都可以看起来很棒。但是在编译它时遇到错误。唯一的问题是,它并不真正告诉我问题是什么。当我尝试编译它时,出现以下问题:错误尝试编译二叉树程序时
g ++ -o bet.x bet.cpp /usr/lib/gcc/x86_64-redhat-linux6E/4.4.7/../../。 ./../lib64/crt1.o:在功能`_start ': (的.text + 0×20):未定义参考`主'
collect2:LD返回1个退出状态
化妆:** * [bet.x]错误1
我不知道这意味着什么。但是,这里是我的3个文件。
bet.x: bet.cpp
g++ -o bet.x bet.cpp
clean:
rm -f *.o *.x core.*
我的继承人bet.h(头文件)保存我的接口:我的makefile开始
#include <string>
using namespace std;
struct BinaryNode
{
string element;
BinaryNode* leftNode;
BinaryNode* rightNode;
};
class BET
{
public:
BET();
BET(const string postfix);
BET(const BET&);
~BET();
bool buildFromPostfix(const string postfix);
const BET& operator= (const BET&);
void printInfixExpression();
void printPostfixExpression();
size_t size();
size_t leaf_nodes();
bool empty();
private:
void printInfixExpression(BinaryNode *n);
void makeEmpty(BinaryNode* &t);
BinaryNode* clone(BinaryNode* t) const;
BinaryNode* headNode;
void printPostfixExpression(BinaryNode *n);
size_t size(BinaryNode *t);
size_t leaf_nodes(BinaryNode *t);
};
它可能会过多地告诉你我的整个bet.cpp文件有我所有的实现。但是这里有一些。如果需要更多的评论:
BET::BET()
{
headNode = NULL;
}
BET::BET(const string postfix)
{
headNode = NULL;
buildFromPostfix(postfix);
}
BET::BET(const BET& t)
{
headNode = clone(t.headNode);
}
BET::~BET()
{
makeEmpty(headNode);
}
//2 functions i made myself for high/low precedence
bool isHighPrec(const string& op)
{
return op == "*" || op == "/";
}
bool isLowPrec(const string& op)
{
return op == "+" || op == "-";
}
//returns false for errors, returns true otherwise
bool BET::buildFromPostfix(const string postfix){
stack<BinaryNode*> opTree;
istringstream istr(postfix);
string op;
makeEmpty(headNode);
while(istr >> op)
{
if(isHighPrec(op) || isLowPrec(op))
{
if(opTree.size() < 2)
{
cout << "Error -- invalid postfix expression!\n";
while(opTree.size())
{
makeEmpty(opTree.top());
opTree.pop();
}
return false;
}
else
{
BinaryNode* bn = new BinaryNode();
bn->element = op;
bn->rightNode = opTree.top();
opTree.pop();
bn->leftNode = opTree.top();
opTree.pop();
opTree.push(bn);
}
}
else
{
BinaryNode* bn = new BinaryNode();
bn->element = op;
bn->rightNode = NULL;
bn->leftNode = NULL;
opTree.push(bn);
}
}
if(opTree.size() != 1)
{
cout << "Error -- invalid postfix expression!\n";
while(opTree.size())
{
makeEmpty(opTree.top());
opTree.pop();
}
return false;
}
else
{
headNode = opTree.top();
opTree.pop();
}
return true;
}
你说_The唯一的事情是,它是不是真的告诉我什么问题is._但这是无效的。你粘贴的确切错误:'(.text + 0x20):undefined reference to'main'' – mah
-1这可以很容易地通过简单的网页搜索来解决你的错误信息。 –
可能重复[什么是未定义的引用/无法解析的外部符号错误,以及如何解决它?](http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-符号错误和如何-DO-修复) –