使用对象中的结构
Use a struct from a object?
我从工作代码(显然不是我写的)开始,我看到他们制作了一个对我来说有意义的类对象数据闪存,但之后他们使用了:
DataFlash::ID id;
这显然是因为他们需要一个该结构的对象,但他们回到DataFlash类的事实让我很困惑,不知道为什么,但我想"不,不,你应该使用我们刚刚创建的对象",并立即将其更改为我下面的对象,这产生了以下错误:
error: invalid use of ‘struct main()::DataFlash::ID’
这不公平,我基本上对眼睛做了同样的事情,为什么这是无效的使用?结构(以及我认为也是嵌套类)一旦在对象中就没用了吗?
#include <iostream>
using namespace std;
int main()
{
class DataFlash
{
public:
struct ID
{
uint8_t manufacturer; /**< Manufacturer id **/
uint8_t device[2]; /**< Device id **/
uint8_t extendedInfoLength; /**< Extended device information**/
};
};
DataFlash dataflash;
dataflash.ID id;
return 0;
}
代码定义了多个嵌套范围层,原始代码使用范围解析操作符::
进行范围解析
您的示例使用了成员访问运算符.
,而结构ID不是成员,它位于类型的范围内,类型和值不是一回事。
作为脚注,由于枚举的作用域规则,枚举可以通过两种方式访问。
#include <iostream>
struct object {
enum identifier {
a = 2,
b = 16,
};
identifier id;
};
int main(int argc, char* argv[]) {
object obj;
std::cout << object::a << std::endl;
std::cout << obj.b << std::endl;
}
相关文章:
- 为什么我们再次从结构对象创建结构变量?
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- 结构对象的指针成员在传递给函数时被修改
- C++ 提升 - 包含类层次结构对象的类的序列化
- 如何将变量从变量传递到指针结构对象
- 在 boost::heap::p riority_queue 中推送结构对象时出错
- 在 c++ 中将结构的每个成员写入文件和将结构对象直接写入文件之间有什么区别吗?
- 为什么结构对象不是类型?
- 程序不会编译,使用带有结构对象的数组
- 在类构造函数中初始化自定义结构对象的正确方法
- 使用QString或字符串调用结构对象
- 在输入结构对象的输入过程中运行时间错误
- C 中的堆是否包含类和结构对象,或者仅包含指针
- 如何将部分初始化的结构对象放入向量
- 如何分配给结构对象的成员
- 尝试创建结构对象,在位置0x3FE00000中创建访问冲突写入错误
- erase() 不适用于结构/对象内的 STL 向量
- 将指向参数个数可变的函数的指针存储在结构对象中
- 如何通过先前存储的ID从结构对象中检索值?C
- 非结构对象布局