-3

我有一个 C++ 类,我在其中声明了两个具有(并且它们应该具有)相似名称的静态方法,但绝对不是相同的名称。所以我这样做了:

#include <cstdio>

struct Cat;

class Cat {
public:
    int age;
    Cat * mother;
    Cat * father;

    Cat(){};
    ~Cat(){};

    static Cat* walk_to_min(Cat* c);
    static Cat* walk_to(Cat* c, int distance);
};

但是当我尝试编译时,G++ 给了我这个:

cats.cpp:22: error: expected unqualified-id before ‘walk_to’
cats.cpp:22: error: expected ‘;’ before ‘walk_to’

但是,如果我改变 - 例如 -它walk_togogo起作用。所以我想这与这些方法的命名有关。

这是怎么回事?为什么不能像我想要的那样命名方法。想象一个 BST,你有 BST_delete 和 BST_delete_min,有时你希望有类似名称的方法。我能做些什么?

更新。对不起大家,我没有显示真实的代码。这是真正的代码:

#include <cstdio>

class BST {
public:
    int key;
    BST* leftChild;
    BST* rightChild;

    BST();
    BST(int t) : key(t) {}
    ~BST(){};

    void inOrder(BST* bstree);
    void preOrder(BST* bstree);
    void postOrder(BST* bstree);

    static BST* delete_min(BST* root);
    static BST* delete(BST* root, int value);
    static BST* search(BST* element, int value);
};

顺便说一句,我的方法 delete_in 和 delete 的定义都是空的:

BST* BST::delete_min(BST* root)
{
}

BST* BST::delete(BST* root, int value)
{
}

和错误:

L2Q1-dunder-mifflin-cpp.cpp:21: error: expected unqualified-id before ‘delete’
L2Q1-dunder-mifflin-cpp.cpp:21: error: expected ‘;’ before ‘delete’

谢谢

4

1 回答 1

12

delete是一个保留的 C++ 关键字,您不能将其用作函数名称 - 出于相同的原因,您也不能将函数命名为“int”或“float”。这是编译器抱怨static BST的关键字之前的“意外”部分。delete

您可以将函数命名为destroy, free, remove, deallocate, delete_all, delete_entire,delete_tree等......考虑到函数的目的,任何最有意义的东西。

于 2013-06-30T02:48:43.703 回答