ошибка g — ожидаемый неквалифицированный идентификатор перед токеном ‘)’

#c #g #compiler-errors

#c #g #ошибки компилятора

Вопрос:

Когда я перехожу к компиляции этого кода, он говорит, что ожидал неквалифицированный идентификатор перед ) в моем конструкторе

analysis2.h:

 #ifndef _ANALYSIS2_H
#define _ANALYSIS2_H

class Analysis2{

public:

    Analysis2();
...
  

analysis2.cpp:

 #include "analysis2.h"

using namespace std;

Analysis2()
{
    Seconds_v = 0;
    Seconds_t = 0;
}
...
  

Как мне это исправить?

Комментарии:

1. Да, в GCC действительно есть несколько вводящих в заблуждение сообщений об ошибках.

2. Что вы хотите, чтобы это сказало? У него нет способа узнать, что вы пытаетесь определить конструктор.

3. @Etienne На самом деле это очень описательно, в нем говорится, что идентификатор перед ) токеном является неквалифицированным. Исправление заключается в том, чтобы указать идентификатор перед ) токеном. В нем точно сказано, в чем проблема, что еще он может сказать?

Ответ №1:

В analysis2.cpp вам нужно сообщить компилятору, что вы определяете конструктор, указав ему область видимости:

 Analysis2::Analysis2()
{
    Seconds_v = 0;
    Seconds_t = 0;
}
  

Оператор разрешения области видимости

Комментарии:

1. Вау. Не могу поверить, что я забыл это. Спасибо!

2. @mrswmmr это случается с лучшими из нас

Ответ №2:

В analysis2.cpp запишите это:

 Analysis2::Analysis()
{
    Seconds_v = 0;
    Seconds_t = 0;
}
  

Вы должны включить имя класса ( Analysis2:: ).

Ответ №3:

Тип

 Analysis2::
  

перед именем метода или конструктора / деструктора

Ответ №4:

Вам нужно указать, Analysis2::Analysis2() пытаетесь ли вы определить конструктор. В противном случае компилятор предполагает, что Analysis2 это имя типа в объявлении чего-то другого.