Cześć,
mam taki problem.
Mam bibliotekę o nazwie Link, która ma swój namespace i w niej są klasy. Powiedzmy, że jest tam klasa:
namespace Link
{
class Remote
{ /* ... */ };
}
Dalej, dodaję tę klasę do innej biblioteki/binarki wykonywalnej poprzez target_link_libraries w CMake'u i mam tam taką implementację:
namespace Link
{
class Remote;
}
namespace ConnectorNs
{
class Connector
{
public:
Connector(std::unique_ptr<Link::Remote> link,
std::unique_ptr<ExampleNs1::ClassA> objA,
std::unique_ptr<ExampleNs2::ClassB> objB)
{}
};
}
Powyższa implementacja daje błąd:
'Remote' is not a member of 'ConnectorNs::Link'
To się dzieje tylko w przypadku Link::Remote
. Pozostałe ExampleNs1
, ExampleNs2
są ok.
Czy coś tutaj robię źle?
Oczywiście rozwiązaniem jest dodanie globalnego namespace'u do przestrzeni nazw Link
, jak poniżej:
Connector(std::unique_ptr<::Link::Remote> link,
Tak jak wspomniałem, rozwiązałem ten problem w powyższy sposób, ale wydaje mi się, że odniesienie do globalnej przestrzeni nazw nie powinno być konieczne.
Dzięki z góry!