如何从封闭 class 访问嵌套的 class 成员函数,其中所有成员在 C++ 中都是 public?
How to access nested class member function from enclosing class where all the members are public in c++?
我在传感器库开发中使用嵌套 类,运行 出错。下面是示例代码和解释。
MainClass.cpp
class MainClass
{
public:
class nested_class;
void func1(){
nested_class1.print();
}
};
NestedClass.cpp
class MainClass::nested_class
{
public:
virtual void print() = 0;
};
Nested1.cpp
class nested_class1: virtual public MainClass::nested_class{
public:
void print();
};
void nested_class1::print(){
cout<<"This is for 1\n";
}
Nested2.cpp
class nested_class2 : virtual public MainClass::nested_class{
public:
void print(){
cout<<"This is for 2";
}
};
我正在尝试使用它来扩展我的传感器库中的抽象概念。但是这样做会出现以下错误:
print() 未在此范围内声明。
我是这个概念的新手,因此很难在这里找到问题所在。我哪里错了?如果需要,我可以提供更多详细信息。
提前致谢!
nested_class1.print();
不是您调用 nested_class1
实例的 print
成员的方式,即使它是在此之前声明的。
MainClass::func1
的定义必须在nested_class1
的定义之后,MainClass::nested_class
的定义必须在MainClass::nested_class
的定义之后。
#include <iostream>
class MainClass
{
public:
class nested_class;
void func1();
};
class MainClass::nested_class
{
public:
virtual void print() = 0;
};
class nested_class1: virtual public MainClass::nested_class{
public:
void print();
};
class nested_class2 : virtual public MainClass::nested_class{
public:
void print();
};
void MainClass::func1() {
nested_class1 obj;
obj.print();
}
void nested_class1::print(){
std::cout<<"This is for 1\n";
}
void nested_class1::print(){
std::cout<<"This is for 2";
}
int main(){
MainClass instance;
instance.func1();
}
我在传感器库开发中使用嵌套 类,运行 出错。下面是示例代码和解释。
MainClass.cpp
class MainClass
{
public:
class nested_class;
void func1(){
nested_class1.print();
}
};
NestedClass.cpp
class MainClass::nested_class
{
public:
virtual void print() = 0;
};
Nested1.cpp
class nested_class1: virtual public MainClass::nested_class{
public:
void print();
};
void nested_class1::print(){
cout<<"This is for 1\n";
}
Nested2.cpp
class nested_class2 : virtual public MainClass::nested_class{
public:
void print(){
cout<<"This is for 2";
}
};
我正在尝试使用它来扩展我的传感器库中的抽象概念。但是这样做会出现以下错误: print() 未在此范围内声明。
我是这个概念的新手,因此很难在这里找到问题所在。我哪里错了?如果需要,我可以提供更多详细信息。
提前致谢!
nested_class1.print();
不是您调用 nested_class1
实例的 print
成员的方式,即使它是在此之前声明的。
MainClass::func1
的定义必须在nested_class1
的定义之后,MainClass::nested_class
的定义必须在MainClass::nested_class
的定义之后。
#include <iostream>
class MainClass
{
public:
class nested_class;
void func1();
};
class MainClass::nested_class
{
public:
virtual void print() = 0;
};
class nested_class1: virtual public MainClass::nested_class{
public:
void print();
};
class nested_class2 : virtual public MainClass::nested_class{
public:
void print();
};
void MainClass::func1() {
nested_class1 obj;
obj.print();
}
void nested_class1::print(){
std::cout<<"This is for 1\n";
}
void nested_class1::print(){
std::cout<<"This is for 2";
}
int main(){
MainClass instance;
instance.func1();
}