Как мне объявить экземпляр моего класса?

#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");