Cześć,
mam prośbę o pomoc.
Mam dwie klasy, które zależą od siebie (poniżej kod). Wszystko jest ok, poza tym, że przy wywołaniu jeden z funkcji wywala błąd kompilacji "error C2039: „fun2”: Nie jest składową „PosManager<Pos>”
Czy mogę mieć prośbę o informację jak powinienem zadeklarować tą funkcję aby było ok?
//----------------------------
//main.cpp
//----------------------------
#include <iostream>
#include <string>
#include "PosManager.h"
#include "Pos.h"
int main()
{
PosManager<Pos> pos_m;
Pos pos;
pos_m.pos = &pos;
pos_m.fun1();
pos_m.fun2(); //<-- Tu jest błąd kompilacji
pos.fun1();
pos.fun2();
std::string x;
std::cin >> x;
}
//----------------------------
PosManager.h
//----------------------------
#pragma once
#include <iostream>
#include "Pos.h"
class Pos;
template<class T>
class PosManager
{
public:
T* pos;
void fun1();
void fun22();
};
template<class T>
inline void PosManager<T>::fun1()
{
std::cout << "PosManager => fun1()\n";
pos->fun1();
}
//----------------------------
PosManager.cpp
//----------------------------
#include "PosManager.h"
#include "Pos.h"
template<class T>
void PosManager<T>::fun22()
{
std::cout << "PosManager => fun2()\n";
pos->fun2();
}
//----------------------------
Pos.h
//----------------------------
#pragma once
#include <iostream>
#include "PosManager.h"
template<class T>
class PosManager;
class Pos
{
public:
void fun1();
void fun2();
};
inline void Pos::fun1()
{
std::cout << "Pos => fun1()\n";
}
//----------------------------
Pos.cpp
//----------------------------
#include "Pos.h"
void Pos::fun2()
{
std::cout << "Pos => fun2()\n";
}
Z góry dziękuję za pomoc!