gpt4 book ai didi

c++ - sourceFile 编译器错误 - 常见问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:31:58 25 4
gpt4 key购买 nike

我从 sourceForge 获得的这个源文件中有 26 个错误。它是 Stanford CS106B library 的一部分所以应该不会有任何错误。

错误示例:

  • C2059:语法错误:'public C2990:'Iterator':非类模板已经声明为类模板
  • C2255: 'friend' : 不允许在类定义之外
  • C2146:语法错误:缺少“;”在标识符“foreachHook”之前
  • C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int
  • C2065:“FE_State”:未声明的标识符

有这么多错误,直觉是可能有一个简单的原因,而不是 26 个复杂的原因。

/*
* File: private/bst.h
* Last modified on Fri Jun 5 15:40:43 2009 by eroberts
* -----------------------------------------------------
* This file contains the private section of the bst.h interface.
* This portion of the class definition is taken out of the bst.h
* header so that the client need not have to see all of these
* details.
*/

public:

/*
* Class: BST<ElemType>::Iterator
* ------------------------------
* This interface defines a nested class within the BST template that
* provides iterator access to the keys contained in the BST.
*/

class Iterator {
public:
Iterator();
bool hasNext();
ElemType next();

private:
struct iteratorMarkerT {
void *np;
bool processed;
};

Iterator(BST *bstp);
BST *bstp;
Stack<iteratorMarkerT> stack;
long timestamp;
void advanceToNextNode();
void findLeftmostChild();
friend class BST;
};
friend class Iterator;
ElemType foreachHook(FE_State & _fe);

/*
* Deep copying support
* --------------------
* This copy constructor and operator= are defined to make a
* deep copy, making it possible to pass/return trees by value
* and assign from one tree to another. The entire contents of
* the tree, including all elements, are copied. Each tree
* element is copied from the original tree to the copy using
* assignment (operator=). Making copies is generally avoided
* because of the expense and thus, trees are typically passed
* by reference, however, when a copy is needed, these operations
* are supported.
*/
const BST & operator=(const BST & rhs);
BST(const BST & rhs);

private:

/* Type definition for node in the tree */
struct nodeT {
ElemType data;
nodeT *left, *right;
int bf; /* AVL balance factor */
};

/* Constant definitions */
static const int BST_RIGHT_HEAVY = +1;
static const int BST_IN_BALANCE = 0;
static const int BST_LEFT_HEAVY = -1;

/* Instance variables */
nodeT *root;
int numNodes;
long timestamp;
int (*cmpFn)(ElemType, ElemType);

/* Private method prototypes */
nodeT *recFindNode(nodeT *t, ElemType & key);
bool recAddNode(nodeT * & t, ElemType & key, bool & createdNewNode);
bool recRemoveNode(nodeT * & t, ElemType & key, bool & didRemove);
bool removeTargetNode(nodeT * & t);
void updateBF(nodeT * & t, int bfDelta);
void recDeleteTree(nodeT *t);
void recBSTAll(nodeT *t, void (*fn)(ElemType));
void fixRightImbalance(nodeT * & t);
void fixLeftImbalance(nodeT * & t);
void rotateRight(nodeT * & t);
void rotateLeft(nodeT * & t);
void copyOtherEntries(const BST & other);

/* Template method prototypes */

template <typename ClientDataType>
void recBSTAll(nodeT *t, void (*fn)(ElemType, ClientDataType &),
ClientDataType & data);

最佳答案

此文件本身不构成有效的 C++。如果您阅读注释,它会从 bst.h 中取出,形成类的私有(private)部分,客户端(库的用户)不需要查看详细信息。 private/bst.h 只有在正确的位置被 #included 到 bst.h 时才有意义。然后编译器将在正确的上下文中解析它。

查看此文件上方 目录中的文件bst.h (private/bst.h)。

关于c++ - sourceFile 编译器错误 - 常见问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11006882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com