В C/C++ функция вызывающего абонента может вызвать функцию вызываемого абонента тогда и только тогда, когда функция вызывающего абонента видна вызывающему, что означает, что определение вызываемого абонента должно выполняться до того, где оно используется , в противном случае используйте форвардную декларацию.Функция в C++: определить ее перед ее использованием
Вот моя проблема,
class A
{
public:
void foo()
{
bar();
}
void bar()
{
//...
}
};
int main()
{
A a;
a.foo();
}
Приведенный выше код будет работать нормально. Но foo
звонки bar
и я не ставил bar
в определении до foo
или forward-declare bar
, как мог позвонить bar
в foo
? Как мог компилятор найти bar
?
Если я переведу определение функции из тела класса, то объявление функции в классе тела будет действовать как forward-decl, правильно? – Alcott
Да. И если вы переместите их оба, вы можете определить их в любом порядке. –