Ошибка: конфликтующее объявление - не может ли указатель быть int?
Я пытаюсь скомпилировать библиотеку при запуске 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
функция \ метод, я должен конвертировать int x
в int a
или же int wtv
или что-то еще вызывает ошибку?
так как автор библиотеки использовал Text* x
а также int x
во многих функциях я думал, может быть, он знает, что он делает, и указатели могут быть int
Или я ошибаюсь, думая, что он знает, что делает?
Не имеет значения: библиотека Adso, китайский механизм анализа текста.
2 ответа
У вас есть два параметра с именем '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);
Автор был не очень хорош, поэтому остерегайтесь других ошибок.
Проблема не только в analyse_code
но во всех частных функциях. если у вас есть исходный код (файл.c), я бы также проверил его там.
в любом случае вы должны изменить Text *x
к чему-либо еще, такому как Text *text