小编Zuc*_*eis的帖子

具有命名参数的函数指针?

我最近在C程序中遇到了一个奇怪的语法。

struct connector_agent_api{
    bool (*receive)(slot *s, uint8_t *data, uint8_t length);
}
Run Code Online (Sandbox Code Playgroud)

“接收”是一个函数指针吗?

如果它是一个函数指针,为什么它有命名参数?应该是下面的样子吗?

bool (*receive)(slot *, uint8_t *, uint8_t);
Run Code Online (Sandbox Code Playgroud)

它当然可以编译并在库中使用。我在互联网上进行了大量搜索,并试图证明这种语法的合理性。我仍然不知道为什么这个东西可以编译... :(

c pointers function

16
推荐指数
2
解决办法
643
查看次数

擦除双端队列 C++ 中的多个元素

我试图在下面的“while”循环中擦除双端队列中的多个元素,但我的程序没有给出正确的结果。

问题背景:

packet_deque包含 9 个Packet对象 - 其中一些已发送,其他未发送。

#include <deque> 
#include <iostream> 

class Packet
{
public:
    void set_sent() { sent = true; };
    bool get_sent() { return sent; };
private:
    /* members of Test class */
    bool sent = false;
};

int main()
{ 
    size_t MAX = 9;
    std::deque<Packet> packet_deque(MAX);
    unsigned int i = 0;

    std::deque<Packet>::iterator itr = packet_deque.begin();
    printf("Before erasing sent packets - packet_dequeue size: %d \n", packet_deque.size());
    // initialise the packet queue - creating some sent …
Run Code Online (Sandbox Code Playgroud)

c++ containers iterator deque

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

C ++位集参考

关于位集参考的两个问题:

Q1。有什么方法可以返回类私有成员位集?在下面的代码片段中(接着输出),我尝试使用常规引用,但它甚至都不会修改Foo类中的bitset成员。

Q2。从这个问题的答案中,我了解到常规引用没有足够的粒度指向存储的单个位,bitset因为bitset它们以更紧凑的形式存储。但是,如果这是真的,我的代码又如何能够修改该行中b3的第一位b3[1] = 0

#include <iostream>
#include <bitset>

using namespace std;

class Foo 
{ 
private:
    bitset<4> b1;  
public:
    inline void print_value() 
    {
        cout << "The bitset b1 is: ( "<< b1 << " )" << endl;
    }
    inline void set_all() { b1.set(); }
    inline bitset<4> get_b1() { return b1; }
    inline bitset<4>& get_b1_ref() { return b1; }
}; 

int main()
{
    Foo f;
    f.print_value();
    f.set_all();
    f.print_value();
    auto b2 = f.get_b1();
    b2.flip(); …
Run Code Online (Sandbox Code Playgroud)

c++ c++11 std-bitset

0
推荐指数
1
解决办法
70
查看次数

标签 统计

c++ ×2

c ×1

c++11 ×1

containers ×1

deque ×1

function ×1

iterator ×1

pointers ×1

std-bitset ×1