相关疑难解决方法(0)

什么是“结构破解”和“类型/非类型隐藏”?

我在cppreference中看到了这一点。

在范围内查找名称会查找该名称的所有声明,只有一个例外,即“结构hack”或“类型/非类型隐藏”:在同一范围内,名称的某些出现可能引用了声明的class/struct/union/enum这不是一个typedef,而具有相同名称的所有其它出现要么全部指代相同的变量,非静态数据成员(因为C ++ 14),或枚举,或者它们都指可能过载功能或功能模板名字

上面文本的链接在这里

我不明白什么是“结构破解”和“类型/非类型隐藏”。

他们是同一概念吗?你能给个简单的解释吗?进行摘要演示会很好。

c++

11
推荐指数
2
解决办法
228
查看次数

在C++中用typedefing类的目的是什么?

在我正在研究的一些C++代码中,我经常看到类似下面的代码:

typedef class SomeClass SomeClass;
Run Code Online (Sandbox Code Playgroud)

我对这实际上取得的成就感到困惑.看起来这不会改变任何事情.这样做typedef是什么意思?如果这样做有用,是否值得付出额外的努力?

c++ typedef

10
推荐指数
3
解决办法
896
查看次数

什么是c ++中的前向声明?

这个答案说:

......最后,

typedef struct { ... } Foo;
Run Code Online (Sandbox Code Playgroud)

声明一个匿名结构并为其创建一个typedef.因此,使用此构造,它在标记名称空间中没有名称,只有typedef名称空间中的名称.这意味着它也无法向前宣布.如果要进行前向声明,则必须在标记名称空间中为其指定名称.

什么是前瞻性声明?

c++ forward-declaration

10
推荐指数
2
解决办法
2万
查看次数

Typedef的匿名类

以下两个定义之间的任何方面(句法限制,性能等)是否有任何差异?

using Foo = struct { int a, b, c; };

struct Foo { int a, b, c; };
Run Code Online (Sandbox Code Playgroud)

(我问的是,因为第一种形式在许多using声明中放在美学上更均匀.)

编辑:评论中链接的帖子并不完全回答我的问题.我更关注上述两个定义在使用方面的差异,而那篇文章主要回答了它们是如何区别的,以及它们是什么,我认为.

c++ c++11

10
推荐指数
1
解决办法
363
查看次数

struct和typedef

以下是C中的等价物吗?

// #1
struct myStruct {
    int id;
    char value;
};

typedef struct myStruct Foo;

// #2
typedef struct {
    int id;
    char value;
} Foo;
Run Code Online (Sandbox Code Playgroud)

如果没有,我应该使用哪一个以及何时使用?

(是的,我看过这个这个.)

c struct typedef

9
推荐指数
2
解决办法
1859
查看次数

删除变量时C++奇怪的编译错误

以下代码不编译 g ++ 4.8.1

struct Layers
{
    typedef struct Widgets { } Widgets;

    virtual void fun(void) 
    {
        struct Widgets w;
    }

    Widgets w, x, y, z ;
};
Run Code Online (Sandbox Code Playgroud)

但是,如果我只是使用Widgets w, x, y ; //Remove variable z编译!

为什么会这样?我在这里错过了什么?

c++

9
推荐指数
2
解决办法
488
查看次数

没有typedef关键字的struct

我目前正在学习structC中的数据结构,以及如何用typedef关键字为这个结构做准备.这会导致实际结构的变量名称放在不同的名称空间中,如以下几个不同的引用中所述:

C++中'struct'和'typedef struct'之间的区别?

typedef struct vs struct definitions

但是,我不清楚我正在使用的示例中发生了什么:

#include <stdio.h>

struct demo
{
    short low_pass_vcf;
    short filter_coupler;
    short reverb;
    short sequential;
} synth;

int main() 
{    
    printf("Size of struct: %i\n", sizeof(struct demo));
    printf("Size of struct: %i\n", sizeof(synth));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我能够struct通过synth变量名访问数据结构; 然而,在我看到的例子中,为了让我能够做到这一点,struct需要以此为前提typedef.在这个例子中,typedef没有使用,但我仍然能够引用这个结构synth.我想知道C允许我这样做到底发生了什么?任何解释将不胜感激.干杯.

c struct data-structures

7
推荐指数
2
解决办法
2615
查看次数

创建boost-python嵌套命名空间

使用boost python我需要创建嵌套的命名空间.

假设我有以下cpp类结构:

namespace a
{
    class A{...}
    namespace b
    {
         class B{...}
    }
}
Run Code Online (Sandbox Code Playgroud)

明显的解决方案不起作用:

BOOST_PYTHON_MODULE( a ) {
    boost::python::class_<a::A>("A")
     ...
    ;
    BOOST_PYTHON_MODULE(b){
        boost::python::class_<a::b::B>("B")
        ...
    ;
    }
}
Run Code Online (Sandbox Code Playgroud)

它会导致编译时错误: linkage specification must be at global scope

有没有办法声明可以从Python访问的B类a.b.B

python boost boost-python

6
推荐指数
2
解决办法
4662
查看次数

是一个结构{...}; 一个类型或一个未命名的变量?

在文件范围,以下是类型声明还是未命名变量?

struct student_s {
    char* name;
    int age;
    double height;
    struct student_s* next;   
};
Run Code Online (Sandbox Code Playgroud)

如果是类型定义,那么有什么区别:

typedef struct student_s {
    char* name;
    int age;
    double height;
    struct student_s* next;   
};
Run Code Online (Sandbox Code Playgroud)

(背景:请参阅我的答案将变量从全局变为本地 - C,我相信第一个引入了一个未命名的变量,然后由编译器对其进行优化.)

注意:该问题已被标记为可能重复的结构成员标识符放在什么范围内?但我相信我并不是在询问有关成员范围的问题,而是对申报实际创造的内容提出疑问.然而.回答C++中'struct'和'typedef struct'的区别?解释我的问题.

c struct

6
推荐指数
1
解决办法
1439
查看次数

这两个声明有什么区别?

我只是在C++的上下文中提问.

struct x1 { ... };
typedef struct { ... } x2;
int main()
{
    x1 a;
    x2 b;
}
Run Code Online (Sandbox Code Playgroud)

c++

6
推荐指数
1
解决办法
181
查看次数