c++ - 即使在使用警卫后也不能使用在另一个类中定义的结构
问题描述
我正在尝试在另一个类中使用一个类的结构。我的第一堂课是这样的:
Class1.h
#ifndef CLASS1_H
#define CLASS1_H
class Class1
{
public:
Class1();
~Class1();
struct St{
int x;
}
St struct1;
private:
};
#endif
现在在第二类的标题中,我想使用这个结构和变量。
类2.h
#ifndef CLASS2_H
#define CLASS2_H
#include "Class1.h"
class Class2
{
public:
Class2();
~Class2();
St struct2;
private:
};
但是,它说:
标识符“St”未定义。
当我以这种方式使用它时:
Class1::St struct1;
错误消失了。我的代码有什么问题?
解决方案
我的代码有什么问题?
问题是St
嵌套类。它的完全限定名称是::Class1::St1
. 在 的范围内Class2
,非限定名称查找不使用 的范围Class1
,因此不会St
找到 的声明。
您可以通过执行以下操作来解决此问题:
当我以这种方式使用它时:
Class1::St struct1;
错误消失了。
推荐阅读
- java - 我应该在一个小型应用程序中使用 Spring Security 模块来获取 bcrypt 哈希密码吗?
- c# - 无法在 C# 中使用 HttpClient 发布 Json
- r - ggplot 按百分比拆分条形图
- javascript - jquery click 事件在 IE 和 Edge 中没有触发
- java - 如何申请
到 jOOQ 中的存储函数? - javascript - 如何将socketio服务器的路径设置为用户的路径?
- javascript - 如何将 v-date-picker 与来自 vuetify 的范围道具一起使用
- python - Why is datetime being truncated in Pandas?
- android - MaterialDesign TextInputLayout 缩放问题
- node-soap - 不正确的根元素并使用肥皂客户端自定义命名空间