小编jka*_*ang的帖子

模板类型的最小/最大值

我有一个相当基本的问题。假设我有一个模板化函数:

bool is_max(std::uint32_t val) {
  return (val == std::numeric_limits<uint32_t>::max());
}
Run Code Online (Sandbox Code Playgroud)

但是,为了使我的功能灵活,我想使用模板:

template <typename T>
bool is_max(T val) {
  return (val == ???);
}
Run Code Online (Sandbox Code Playgroud)

std::numeric_limits 函数适用于内置类型,但显然不适用于用户定义类型。

是否有一些当前内置和大多数数字类型(我正在尝试使用cnl::fixed_point)的标准运算符或函数可用于此处查找最小值/最大值?

c++ templates

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

在Verilog中找到`define的MAX值

我想创建一个define constant that is assigned to one of multiple other具有最大值的定义常量.就像是:

`define MAXWIDTH $MAX(`WIDTH0,`WIDTH1,`WIDTH2)
Run Code Online (Sandbox Code Playgroud)

这在Verilog/SystemVerilog中是否可行?

verilog system-verilog

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

C++ 多态性和原始指针的使用

我正在编写一个数据包处理器并具有以下类:

class Parser {
  private:
    Packet* curr_pkt;
  public:
    void parsePacket(unsigned char byte) {
      if(byte == SyncPacket::headerVal) {
        SyncPacket pkt;
        curr_pkt = &pkt;
      }
      if(byte == SyncPacket::headerVal) {
        TypeAPacket pkt;
        curr_pkt = &pkt;
      }
    }
};
class Packet {
  public:
    void parseByte(unsigned char byte) {}
};
class SyncPacket : public Packet {
  public:
    static const unsigned char headerVal = 0x0A;
    void parseByte(unsigned char byte) {
      <do sync>
    }
};
class TypeAPacket : public Packet {
  public:
    static const unsigned char headerVal …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism raw-pointer

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

C++ 从基类指针转换派生类指针

以下代码: https: //godbolt.org/z/eYEdTnMqc

#include<memory>
#include<vector>
#include<string>

class Base {
  protected:
    std::string type;
};
class Derived1 : public Base{
  protected:
    bool status;
  public:
    Derived1(): status(false), type("Derived1") {}
    void setStatus(bool newStatus) {
      status = newStatus;
    }
    bool getStatus() {
      return status;
    }
};

int main() {
  std::vector<std::shared_ptr<Base>> vars;

  vars.push_back(std::make_shared<Derived1>());
  if(!vars.back()->getStatus()) {
    vars.back()->setStatus(true);
  }
}
Run Code Online (Sandbox Code Playgroud)

给我这个编译错误:

Could not execute the program
Compiler returned: 1
Compiler stderr
<source>: In constructor 'Derived1::Derived1()':
<source>:13:32: error: class 'Derived1' does not have any field named 'type'
   13 | …
Run Code Online (Sandbox Code Playgroud)

c++ unique-ptr

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