#c #function #instance
#c #функция #экземпляр
Вопрос:
У меня есть Parser.h, Parser.cpp файл с функциями в нем, конструктор
Parser::Parser(string filename){....}
Теперь я хочу использовать мой синтаксический анализатор в моем functions.cpp файл, в котором я убедился, что
#include "Parser.h"
В моей функции я хочу использовать анализатор, как мне создать его новый экземпляр, это то, что у меня есть, но я получаю ошибки синтаксиса.
Parser::Parser parser("filename.txt");
извините, ребята, я должен был убедиться, что я скопировал свой код правильно, у меня нет ошибок в кавычках, и я не забыл включить parser.h
Комментарии:
1. Я могу ошибаться, но разве ваше имя файла не должно быть «filename.txt «вместо ‘filename.txt’, который будет считаться символом. Возможно, вы можете показать свой отладочный код?
2. К сведению пользователей, по-видимому, было внесено как минимум две правки в этот вопрос, которые исправляли опечатки при копировании кода, выполненные достаточно быстро, чтобы не быть отмеченными как правки в вопросе (да, это работает ehre). Комментарии и ответы, в которых упоминаются ошибки, не обнаруженные выше, относятся к более ранним версиям.
3. Похоже, что выбранный ответ был отредактирован в вопросе… так в этом была проблема? Или у нас только что был приятный сеанс исправления опечаток? Сбивает с толку.
Ответ №1:
(Если вы #include
d Parser.h
) вам нужно только
Parser parser("filename.txt");
Parser::Parser
отмечает определение метода конструктора класса Parser
. Однако конструктор можно (и нужно) вызывать не напрямую — вы вызываете его неявно, определяя экземпляр Parser
, как указано выше.
Обратите внимание, что имя файла должно быть в двойных кавычках (одинарные кавычки обозначают одиночные символы, двойные кавычки предназначены для текстовых строк).
Ответ №2:
#include "functions.h"
Ваше имя заголовочного файла — Parser.h
, а не functions.h
.
Итак, сделайте это:
#include "Parser.h"
Тогда это:
Parser parser("filename.txt"); //not Parser::Parser parser('filename.txt');
Используйте двойные, а не одинарные кавычки для строковых литералов, таких как "filename.txt"
Комментарии:
1. вот и все, я приму ваш ответ через 8 минут, у меня есть несколько других синтаксисов, с которыми я не могу разобраться, c для меня новый
2. @user570098: Когда вы спрашиваете, почему у вас возникли проблемы, опечатки — это плохо. Когда это синтаксическая ошибка, опечатки очень, очень плохи. ВСЕГДА вырезайте и вставляйте в подобных ситуациях. У вас, по-видимому, было три отдельные ошибки в исходной версии, и некоторые люди исправили те, которые были опечатками.
Ответ №3:
Попробуйте
Parser::Parser parser("filename.txt");
Одинарные кавычки предназначены для отдельных символов, а не для строк.
Ответ №4:
Parser parser("filename.txt");