Передача объектов в ф-ии класса
Код:
class A
{
public:
A(void);
~A(void);
void init(B* test);
};
{
public:
A(void);
~A(void);
void init(B* test);
};
Что я делаю не так?
А что такое B - откуда компилятору знать?
Например тут:
Код:
class A
{
public:
A(void);
~A(void);
void init(void);
};
void A::init(void)
{
A test();
return;
}
{
public:
A(void);
~A(void);
void init(void);
};
void A::init(void)
{
A test();
return;
}
Код:
class A
{
public:
A(void);
~A(void);
void init(void);
};
void A::init(void)
{
A test();
return;
}
{
public:
A(void);
~A(void);
void init(void);
};
void A::init(void)
{
A test();
return;
}
А здесь ошибка:
Код:
class A
{
public:
A(void);
~A(void);
void init(B* test);
};
{
public:
A(void);
~A(void);
void init(B* test);
};
Никто не передаёт в методы класса объекты других самодельных классов?
Я не специалист по cpp, но вот что у меня получилось:
Разобрался. Как я понял сторонние классы нужно инклюдить в хедере а не в .cpp?
Их нужно подключать там, где их используете.
a.h:
Код:
class B;
class A
{
public:
void test(B*);
};
class A
{
public:
void test(B*);
};
Код:
class B
{
public:
void test();
};
{
public:
void test();
};
Код:
#include <iostream>
#include "a.h"
#include "b.h"
void A::test(B* t)
{
t->test();
}
void B::test()
{
std::cout << __func__ << std::endl;
}
int main(int argc, const char * argv[])
{
B b;
A().test(&b);
}
#include "a.h"
#include "b.h"
void A::test(B* t)
{
t->test();
}
void B::test()
{
std::cout << __func__ << std::endl;
}
int main(int argc, const char * argv[])
{
B b;
A().test(&b);
}