c++ - 如何从所有成员在 C++ 中公开的封闭类访问嵌套类成员函数?
问题描述
我在传感器库开发中使用嵌套类并遇到错误。下面是示例代码和解释。
主类.cpp
class MainClass
{
public:
class nested_class;
void func1(){
nested_class1.print();
}
};
嵌套类.cpp
class MainClass::nested_class
{
public:
virtual void print() = 0;
};
嵌套1.cpp
class nested_class1: virtual public MainClass::nested_class{
public:
void print();
};
void nested_class1::print(){
cout<<"This is for 1\n";
}
嵌套2.cpp
class nested_class2 : virtual public MainClass::nested_class{
public:
void print(){
cout<<"This is for 2";
}
};
我正在尝试使用它来扩展我的传感器库中的抽象概念。但是这样做会出现以下错误: print() is not declared in this scope。
我是这个概念的新手,因此很难在这里找到问题。我在哪里错了?如果需要,我可以提供更多详细信息。
提前致谢!
解决方案
nested_class1.print();
不是你如何调用 的print
实例的成员nested_class1
,即使它是在此之前声明的。
的定义MainClass::func1
必须在 的定义之后nested_class1
,而 的定义必须在 的定义之后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();
}
推荐阅读
- c# - C# 中的 SerialPort 无法正确发送扩展 ASCII 字符
- python - 仅将时间戳转换为月份名称
- altbeacon - 即使添加了新的解析器布局,Alt Beacon Parser 也无法正常工作
- unity3d - unitywebrequest 函数的未知错误
- qt - 在 Raspberry Pi 上本地编译 QtWebEngine
- php - 如何从 Laravel 的表中仅检索一行
- angular7 - 如何使用 Angular 7 和 PrimeNg 将具有没有特定属性的动态键值对的 JSON 数据导出到 excel 文件中?
- javascript - 将 wordpress 插件挂接到单个页面以呈现一些 html/javascript 内容的最佳方法是什么?
- python - 从列表中的字符串中检索字符
- python - 在 Python 中使用 ProcessPoolExecutor 的运行调用数不正确