incomplete-type相关内容

在C语言中,是否有可能在语义上创建一个类型不完整的左值?

在C89标准中,我找到以下部分: 3.2.2.1 L值和功能指示符 除非它是sizeof运算符、一元&;运算符、++运算符、--运算符或的左操作数的操作数。运算符或赋值运算符,则不具有数组类型的左值将转换为存储在指定对象中的值(不再是左值)。如果左值具有限定类型,则该值具有左值类型的非限定版本;否则,该值具有左值类型。如果左值的类型不完整并且没有数组类型,则行为未定义。 如果我 ..

不允许C++转发声明和';不完整的类型';错误

我有两个类(或者更好的是,头文件)是我的C++程序的一部分,我就是不能让它们全部工作!他们基本上需要彼此的数据才能正常运行,作为我的应用程序的一部分。 不要通过阅读此代码的要点来折磨自己;我只需要解决转发声明和相互包含问题,因此只查看与此问题有关的代码部分。 错误出现在最后的第二个代码片段中(我不得不从第一个代码片段中砍掉一大块代码,这样我才能发布问题,我想这与我的问题无关)。 ..
发布时间:2022-03-15 20:49:10 C/C++开发

“不完整类型"在具有与类本身相同类型的成员的类中

我有一个类应该有同一个类的私有成员,例如: class A {私人的:成员;} 但它告诉我成员是一个不完整的类型.为什么?如果我使用指针,它不会告诉我不完整的类型,但我宁愿不使用指针.任何帮助表示赞赏 解决方案 在你声明你的成员时,你还在定义 A 类,所以类型A 仍未定义. 然而,当你写A*时,编译器已经知道A代表一个类名,所以“指向A的指针"的类型是定义.这就是为什么您可以嵌入 ..
发布时间:2021-12-25 13:02:42 C/C++开发

C Typedef - 不完整的类型

所以,出乎意料地,编译器决定把这个吐出来:“现场客户的类型不完整". 以下是相关代码片段: customer.c #include #include #include "customer.h"结构客户结构;typedef struct CustomerStruct{字符 ID[8];字符名称[30];字符姓氏[30];字符地址[100];} 顾客 ;/* 处理这里结构的函数 */ ..
发布时间:2021-12-23 17:04:19 其他开发

模板中的类使用不完整

我很惊讶在各种采样版本的 g++ 上,以下编译没有错误或警告: //改编自 boost::checked_delete()模板内联无效 assert_complete(){typedef char type_must_be_complete[ sizeof(T) ?1 : -1 ];(无效)sizeof(type_must_be_complete);}X级;无效 f(){assert_compl ..
发布时间:2021-12-13 19:03:49 C/C++开发

如何声明同一类的成员向量?

到底为什么下面这段代码有效? struct A {std::vector子作为;}; A 是不完整的类型,对吧?如果有 A*s 的向量,我会理解.但在这里我不明白它是如何工作的.这似乎是一个递归定义. 解决方案 这个 paper 被引入 C++17 允许在某些 STL 容器中使用不完整的类型.在此之前,它是未定义的行为.引用论文: 基于 Issaquah 会议的讨论,我们实现了共 ..
发布时间:2021-12-13 18:36:37 C/C++开发

标准容器模板可以用不完整的类型实例化吗?

有时实例化具有不完整类型的标准容器以获得递归结构是有用的: struct multi_tree_node {//在大多数实现中都有效std::vector下一个;}; 这往往有效,因为容器没有 value_type 类型的成员或按值传递或返回任何 value_type 对象的成员函数.标准似乎并没有对不完整的模板参数说太多,但在 C++11 §17.6.4.8 [lib.res.on.func ..
发布时间:2021-12-13 18:27:31 C/C++开发

为什么 C++ 容器不允许不完整的类型?

为什么 C++ 不允许实例化不完整类型的容器? 当然可能编写没有此限制的容器 -- boost::container 完全有能力做到这一点.据我所知,它似乎没有提供任何性能或其他类型的增益,但标准声明它是未定义的行为. 例如,它确实阻止构建递归数据结构. 为什么 C++ 标准会强加这种任意限制?尽可能允许不完整类型作为模板参数有什么缺点? 解决方案 C++ 标准化委员会图 ..
发布时间:2021-12-13 18:21:01 C/C++开发

GCC:数组类型具有不完整的元素类型

我已经声明了一个 struct,并且我尝试将这些结构的数组(以及一个双精度数组和一个整数的 double 数组)传递给一个函数.我在编译时从 gcc 收到 “数组类型具有不完整的元素类型" 消息.将 struct 传递给函数的方式有什么问题? typedef struct graph_node {整数 X;输入 Y;活动;} g_node;void print_graph(g_node grap ..
发布时间:2021-11-18 02:07:09 其他开发

不兼容的类型 List of List 和 ArrayList of ArrayList

以下行给了我错误: 不兼容的类型.列表>output = new ArrayList>(); 是什么原因? 编辑 我知道如果我将第二个 ArrayList 更改为 List,它不会给我错误.我想知道错误的原因.谢谢 解决方案 如果你有一个 List> 那么你就可以添加一个 LinkedList 到它.但是你不能对 ArrayList> 这样做,所以后者不可能是 List> ..
发布时间:2021-11-17 23:16:52 Java开发

作为 std::map 成员的不完整类型

我遇到了与此处所述相同的问题 无法分配具有前向声明值的类std::map 成员变量 在我们的代码库中. 然而,我还发现我们的编译器(MSVC 2017)能够编译它的其他情况... 在摆弄代码之后,我发现定义 con- &cpp 中的析构函数允许文件编译. 在 test.h 中: #ifndef TEST_H#define TEST_H#include 结构不完整;类测试{std ..
发布时间:2021-08-30 19:06:28 C/C++开发

C++ - 什么是“不允许不完整的类型"?错误的意思,我该如何解决?

尽管我在 C++ 中看到了很多关于“不允许的不完整类型"错误的问题,但我仍然无法弄清楚编译器在像这样对我尖叫时试图告诉我什么.我已经能够拼凑起来,它与 #include-ing 头文件有关,但我对“不完整类型"是什么以及为什么“不允许"一无所知.尝试从 SDL_Window 继承时出现错误: #pragma once#include "SDL.h"类窗口:公共 SDL_Window{上市:窗户( ..
发布时间:2021-07-17 19:32:14 C/C++开发

声明数组而不指定行大小?

a[][3] 声明如何正确,而 a[3][] 在 C 中是错误的? 解决方案 您可以为不完整类型的对象声明标识符.例如,考虑以下声明: extern int a[][3]; 这告诉编译器,当使用a 时,它指的是一个由三个int 组成的数组.如果使用它,则必须在其他地方定义该数组.但是,要使用这个数组,编译器不需要知道它的大小.如果a有起始地址x且int是四个字节,我们可以计算元素a[i ..
发布时间:2021-06-04 19:42:11 其他开发

外部模板和类型不完整

最近,当我尝试优化自己的包含层次结构时,偶然发现文件 a.hpp : templateA级{使用t =类型名T :: a_t;};B级;外部模板类A B; 这似乎是错误的形式.实际上,似乎最后一个extern模板语句会导致 A 的实例化,这会导致编译器抱怨类型不完整. 我的目标是在 a.cpp 中定义 A : #include模 ..
发布时间:2021-04-20 18:43:45 C/C++开发