Ошибка при использовании объекта из другого класса

0

foo.h

class Foo{
private:
    void printSpecialBar(Bar b);//syntax error: Identifier Bar

foo.cpp

#include "Bar.h"

void Foo::printSpecialBar(Bar b)
{
    //code goes here
}

Bar имеет конструктор по умолчанию и тот, который принимает два int.

В чем проблема с синтаксической ошибкой? Я попытался использовать оператор resuloution для области видимости Bar :: Bar b, но он не исправил его.

  • 1
    Вы должны включить Bar.h в Foo.h
  • 1
    @awesomeyi - это что, помимо включения в Foo.cpp?
Показать ещё 3 комментария
Теги:
oop

2 ответа

1

Типичной практикой было бы

class Bar;

в Foo.h, перед любой ссылкой на класс Bar, и Foo.h фактический класс, например

#include "Bar.h"

в Foo.cpp.

  • 0
    и это должно быть после директивы #pragma once Once, верно?
  • 0
    Ну, это действительно не имеет ничего общего с #pragma. Так что любая позиция будет в порядке.
0

Так как Foo.h reference Bar, либо используйте форвардную декларацию, либо #include "Bar.h" в Foo.h

Ещё вопросы

Сообщество Overcoder
Наверх
Меню