小编mik*_*e_b的帖子

friend声明声明了非模板函数

我有一个基类类似于下面的代码.我试图重载<<以与cout一起使用.但是,g ++说:

base.h:24: warning: friend declaration ‘std::ostream& operator<<(std::ostream&, Base<T>*)’ declares a non-template function
base.h:24: warning: (if this is not what you intended, make sure the function template has already been declared and add <> after the function name here) -Wno-non-template-friend disables this warning
Run Code Online (Sandbox Code Playgroud)

我尝试在类声明/原型中添加<<之后的<>.但是,我明白了does not match any template declaration.我一直试图让操作符定义完全模板化(我想要的),但我只能使用以下代码使用操作符手动实例化.

base.h

template <typename T>
class Base {
  public:
    friend ostream& operator << (ostream &out, Base<T> *e);
};
Run Code Online (Sandbox Code Playgroud)

base.cpp

ostream& operator<< (ostream &out, Base<int> *e) {
    out << e->data;
return …
Run Code Online (Sandbox Code Playgroud)

c++ templates operator-overloading friend specialization

47
推荐指数
4
解决办法
3万
查看次数

grep正则表达式中的shell变量

我正在尝试在grep正则表达式中使用变量.我将发布一个失败的例子,也许有人可以建议如何在运行grep命令时对变量进行评估.我也试过${var}了.

$ string="test this"
$ var="test"
$ echo $string | grep '^$var'
$ 
Run Code Online (Sandbox Code Playgroud)

由于我的正则表达式应该匹配以"test"开头的行,它应该打印通过它回显的行.

$ echo $string
test this
$
Run Code Online (Sandbox Code Playgroud)

bash grep

36
推荐指数
1
解决办法
7万
查看次数

“ModuleNotFoundError:在安装诗歌包后没有名为”的模块

我有一个包配置为在容器构建期间使用诗歌进行构建/安装。我不明白为什么poetry install说它已经安装了我的软件包,但没有找到它。不过,poetry build后面跟着一个pip install轮子效果很好。如果包名称与根文件夹的文件夹名称相同,是否需要指定子包,或者如何让诗歌使用安装完整的包poetry install?我尝试了对pyproject.toml文件的各种调整,包括设置packages

\n

文件结构如下所示:

\n
.\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80  my_pkg\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Dockerfile\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 my_pkg\n \xc2\xa0\xc2\xa0  \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n \xc2\xa0\xc2\xa0  \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 app.py\n\n
Run Code Online (Sandbox Code Playgroud)\n

pyproject.toml文件如下所示:

\n
[tool.poetry]\nname = "my_pkg"\nversion = "0.1.0"\ndescription = "My Package"\n\n[tool.poetry.dependencies]\npython = ">=3.8,<3.11"\n...\n\n[build-system]\nrequires = ["poetry-core>=1.0.0"]\nbuild-backend = "poetry.core.masonry.api"\n
Run Code Online (Sandbox Code Playgroud)\n

问题是运行后未安装该软件包poetry install

\n
%  poetry install\nInstalling dependencies from lock file\n\nPackage operations: 70 installs, 4 updates, 0 removals\n\n   \xe2\x80\xa2 Installing …
Run Code Online (Sandbox Code Playgroud)

python python-poetry

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

我可以在编译和链接中将C++主函数和类与Objective-C和/或C例程分开吗?

我有一个小的C++应用程序,我导入了Objective-C类.它可用作Objective-C++文件,.mm,但任何包含可能最终包含某些Objective-C标头的标头的C++文件必须重命名为.mm扩展名以获取正确的GCC驱动程序.

有没有办法为Objective-C类编写一个纯粹的C++包装器,或者我可以以某种方式将Objective-C对象分开并将它们分开链接?也许即使Objective-C类成为一个小型库,我可以在编译时静态重新链接?

问题是这个代码是跨平台的,并且在通常不使用Objective-C(即不是Mac)的系统上编译更加困难.即使预处理器命令限制在Windows或Linux上实现Objective-C代码,原始代码仍然具有.mm扩展名,GCC仍将代码视为Objective-C++.

c++ compiler-construction objective-c objective-c++

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

在Python中将十六进制字符串写为二进制数据

我有一串数据FF0000FF,我希望将其作为原始的8位字节写入文件11111111 00000000 00000000 11111111.但是,我似乎最终在使用时FF变成了大量数据FF 00 00 00,struct.pack或者我得到了0和1的文字ASCII版本.

我怎样才能简单地取一个十六进制字符串并将其写为二进制,因此在十六进制编辑器中查看时,您会看到相同的十六进制字符串?

python hex

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

调用Parent方法并访问Parent类中的私有变量?

我正在尝试使用以下代码,但是我找不到关于C++如何处理公共继承和私有继承的足够好的文档,以允许我做我想要的.如果有人可以解释为什么我无法访问Parent::setSize(int)Parent::size使用私有继承或Parent::size使用公共继承.要解决这个问题,我需要在Parent中使用a getSize()setSize()方法吗?

class Parent {
    private:
        int size;

    public:
        void setSize(int s);
};

void Parent::setSize(int s) {
    size = s;
}

class Child : private Parent {
    private:
        int c;

    public:
        void print();
};

void Child::print() {
    cout << size << endl;
}

int main() {
    Child child;

    child.setSize(4);

    child.print();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ inheritance

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

当给定的 JSON 值不是 JSON 对象时解组自定义结构

我定义了一个自定义结构,用于将 API 响应解组到其中。有时,""当对象为空或丢失时,API 会决定发送一个空字符串 ( )。我不清楚如何处理这种类型不匹配。我实际上有数百个这样的自定义结构(嵌套),如果最顶层的父结构为空,API 将为它执行此操作。如果有某种方法可以在不需要自定义UnmarshalJSON方法的情况下全局执行此操作,那将是理想的。我正在使用代码生成,所以我可以轻松添加这些方法。

当我第一次尝试编写自己的 custom 时UnmarshalJSON,我最终陷入了一个循环:

func (e MyStruct) UnmarshalJSON(b []byte) error {
    t := MyStruct{}
    if string(b) == `""` {e = t} else {
        if err := json.Unmarshal(b, e); err != nil {
            return fmt.Errorf("failed to parse nested structure: %v", err)
        }
    }
    return nil
}
Run Code Online (Sandbox Code Playgroud)

我明白为什么我最终陷入了循环,但我觉得我缺少更好的解决方案。

我在 Go Playground 中创建了一个示例。

https://play.golang.org/p/DrrFhA3TzPv

如果您正在寻找更多上下文,我当前生成的代码在这里:https : //github.com/mbrancato/edgeos/blob/a8af9143aa82ddece27089bf2f543f473c97d2db/sdk/config.go

json go

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

解组 JSON 并区分缺失键和空值

我正在使用一个应用程序 API,它以null不同的方式处理 JSON 中缺失的键和值。{"value":null}它可能会像or一样返回 JSON {}- 如果密钥存在,它们意味着不同的东西。我的问题是我需要将数据解组为 a struct,然后编组回 JSON,保留这种细微差别。

如果我定义一个结构,如:

type Test struct {
    Value *string `json:"value,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)

然后{"value":null}将其编组为 JSON 作为{}.

如果我定义一个结构,如:

type Test struct {
    Value *string `json:"value"`
}
Run Code Online (Sandbox Code Playgroud)

然后{}将其编组为 JSON 作为{"value":null}.

有没有办法处理从 JSON 读取的 null 和缺失键,并保留缺失键与 null 值之间的差异?

api json go

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

读取和写入结构的向量到文件

我已经阅读了Stack Overflow和其他一些关于向文件写入向量的网站上的一些帖子.我已经实现了我认为有效的方法,但我遇到了一些麻烦.结构中的一个数据成员是类字符串,当重新读入向量时,该数据将丢失.此外,在编写第一次迭代之后,额外的迭代会导致malloc错误.如何修改下面的代码以实现将矢量保存到文件所需的能力,然后在程序再次启动时将其读回?目前,读取是在构造函数中完成的,在析构函数中写入,类的唯一数据成员是向量,但是具有操作该向量的方法.

这是我的读/写方法的要点.假设vector<element> elements......

读:

ifstream infile;
infile.open("data.dat", ios::in | ios::binary);
infile.seekg (0, ios::end);
elements.resize(infile.tellg()/sizeof(element));
infile.seekg (0, ios::beg);
infile.read( (char *) &elements[0], elements.capacity()*sizeof(element));
infile.close();
Run Code Online (Sandbox Code Playgroud)

写:

ofstream outfile;
outfile.open("data.dat", ios::out | ios::binary | ios_base::trunc);
elements.resize(elements.size());
outfile.write( (char *) &elements[0], elements.size() * sizeof(element));
outfile.close();
Run Code Online (Sandbox Code Playgroud)

结构元素:

struct element {
int id;
string test;
int other;        
};
Run Code Online (Sandbox Code Playgroud)

c++ fstream vector

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

没有条件的C++ for循环

我跑过这个(;;){}

快速粗略搜索引导我找不到这意味着什么.它看起来像另一个线程可能正在处理终止它.这相当于'while(TRUE){}'吗?

c++ for-loop

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

数组输入从未使用过

我正在尝试创建一个寄存器数组,并希望消除警告.我在下面创建了一个最小的示例设计.为什么部分addr未使用?

当我合成时,我收到警告:
WARNING:Xst:647 - Input <addr<3:2>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.

module test(addr,in,out,wr,clk);
input [3:0] addr;
input [7:0] in;
output reg [7:0] out;
input wr;
input clk;
reg [7:0] ra [0:3];

always @(posedge clk)
begin
    if (wr)
        ra[addr] = in;
    else
        out <= ra[addr];
end
endmodule
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个8位宽的寄存器,其中包含16个地址(0-15).

arrays verilog

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