I'm using libsourcey lib for learning. I try to write a new class that inherit a class named Signal.
in libsourcey
template <typename RT> class Signal;
template <typename RT, typename... Args> class Signal<RT(Args...)> {...}
and my way
template <typename RT> class NewSignal;
template <typename RT, typename... Args> class NewSignal<RT(Args...)> : public Signal<RT(Args...)> {...}
but i can't access any property of class Signal, also attribute (although I modify attribute to public). Complier (eclipse) report: was not declared in this scope
Example
I have 2 class
class B
template<class RT> class B;
template<class RT, class... Args>
class B<RT(Args...)> {
public:
B(int value = 0) : m_i(value) {}
~B() {}
void print() {
std::cout << "i = " << m_i << std::endl;
}
int m_i;
};
class A
template<class RT> class A;
template<class RT, class... Args>
class A<RT(Args...)> : public B<RT(Args...)> {
public:
A(int value = 0) : B<RT(Args...)>(value) {}
virtual ~A() {}
void print() {
std::cout << "i = " << 2 * m_i << std::endl;
}
};
and main.cpp
#include "Aclass.hpp"
#include "Bclass.hpp"
int main(int argc, char* argv[]) {
B<void(void)> b(1);
b.print();
A<void(void)> a(2);
a.print();
return 0;
}
But when i change std::cout << "i = " << 2 * m_i << std::endl;
in class A to std::cout << "i = " << 2 * B<RT(Args...)>::m_i << std::endl;
then build done, no error.
Anyone explain why compiler report like this. How i can inherit Signal class. If not, have any solution? Thank for supporting.