错误:冲突声明 - 指针不能成为int?

时间:2012-11-18 12:02:52

标签: c++ compiler-errors g++

我正在尝试编译库,在运行make时,我遇到了以下许多错误:

error: conflicting declaration ‘int x’
error: ‘x’ has a previous declaration as ‘Text* x’

以下是代码:

.
.
.
class Text;
class Code {

    private:
            std::vector<std::string> *tokens;
            std::vector<std::string> *compounds;
            std::vector<std::string> *compound_xml;
            std::vector<std::string> *compound_xml_action;
            void set_helper(Text *x, int a, int b, int c, std::string field, std::string value);
            std::string itoa(int x);

    public:
            Code();
            ~Code();

            int analyse_code(Text *x, std::string c, int x, int y, int z);
            int print(Text *x, std::string c, int x, int y, int z);
            int is_class(Text *x, std::string c, int x, int y, int z);
            int is_class2(Text *x, std::string c, int x, int y, int z);
            int not_class(Text *x, std::string c, int x, int y, int z);

 .
 .
 .

所以在analyse_code function \ method中,我应该将int x转换为int a还是int wtv还是导致错误?

因为该库的作者在许多函数中使用了Text* xint x,我想也许他知道他在做什么,指针可以是int,或者我认为他是错的知道他在做什么吗?

不相关:图书馆是Adso,一个中文文本分析引擎。

2 个答案:

答案 0 :(得分:0)

在声明中有两个名为'x'的参数:

int not_class(Text *x, std::string c, int x, int y, int z);

将其中一个命名为其他内容。例如:

int not_class(Text *txt, std::string c, int x, int y, int z);

作者不太好,所以要注意其他错误。

答案 1 :(得分:0)

问题不仅存在于analyse_code中,而且存在于所有私有函数中。如果您有源代码(.c文件),我也会检查它。

无论如何,您应该将Text *x更改为其他任何内容,例如Text *text