例如,我有下一段代码:
template<typename T, typename T2>
class a
{
public:
using myfl_t = float;
a(myfl_t fl, double db) {}
virtual void f()
{
std::cout << "a::f()\n";
}
};
template<typename T>
class b : public a<T, int>
{
using base_t = a<T, int>;
using myfl_t = typename base_t::myfl_t;
public:
b(myfl_t fl, double db)
: base_t(fl, db) {}
void f() override
{
std::cout << "b::f()\n";
}
};
看来我只能通过在派生类中复制 using 来重用基类的 myfl_t 声明。 有更简单的方法吗?
最佳答案
class a
中定义的
myflt_t
在 class b
中不可见,如下所述:https://eli.thegreenplace.net/2012/02/06/dependent-name-lookup-for-c-templates
你可以将 myflt_t
带入 class b
而无需显式重新声明:
using typename base_t::myfl_t
关于c++ - 通过派生类模板参数指定基类模板参数之一。如何使用基类的 using 声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56378513/