我希望创建一个具有模板的基类派生类,并保留template选项。
但是,我不能访问作为基类一部分的结构。
以下是一个例子:
template <typename T1>
class Base{
public:
Base(){}
~Base(){}
struct Struct {
int Integer=0;
};
virtual void Function(Struct NewStrcut){ }
//void Proccess(int T_Var){
void Proccess(T1 T_Var){
// do something
}
};
template <typename T>
class Derived : public Base<T>{
//class Derived : public Base{
Derived(){}
~Derived(){}
void Function(Struct NewStrcut){
// do something
}
};我得到以下错误:
错误:“Struct”未被声明为Build51-void函数(Struct NewStrcut){
我正在使用c++17和GCC11在Ubuntu18上
发布于 2022-03-25 14:28:24
多亏了@πάνταῥεῖ@Fareanor,我找到了答案
只需在Struct之前添加"typename Base::“
正如您在以下代码中所看到的:
template <typename T1>
class Base{
public:
Base(){}
~Base(){}
struct Struct {
int Integer=0;
};
virtual void Function(Struct NewStrcut){ }
//void Proccess(int T_Var){
void Proccess(T1 T_Var){
// do something
}
};
template <typename T>
class Derived : public Base<T>{
//class Derived : public Base{
Derived(){}
~Derived(){}
void Function( typename Base<T>::Struct NewStrcut){
// do something
}
};https://stackoverflow.com/questions/71618066
复制相似问题