小编Jua*_*eni的帖子

无法使用模板编译std :: list iterator

当我尝试编译这个时,我收到此错误:

error: expected `;' before 'it'
Run Code Online (Sandbox Code Playgroud)

为什么我不能声明这个迭代器?问题出在哪儿?

#include <list>

template <typename Z>
class LBFuncBase: public LBBaseBlock<Z>
{
    void Something() {
         std::list<LBBaseBlock< Z >* >::iterator it;
    }
};
Run Code Online (Sandbox Code Playgroud)

c++ stl

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

如何在字段中的最后一个逗号后获取字符串

我有一个包含这样的数据的列,我通过Python访问:

501,555,570=3.5
Run Code Online (Sandbox Code Playgroud)

我想得到570=3.5.

我怎样才能做到这一点?它会是split命令的变体吗?

python split substring

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

缺少分号:C++或SWIG问题?

这个问题实际上是关于SWIG的,而不是缺少分号的基本C++.

我在类中(在头文件中)有以下方法:

class BarClass 
{
    // ... more code goes here
    unsigned int foo(unsigned int val) throw(std::invalid_argument) override;
    // ... more code goes here
};
Run Code Online (Sandbox Code Playgroud)

我在表单中有一个SWIG接口声明:

%include "stdint.i"
%include "std_except.i"
%include "exception.i"

%module mymodule
%{
    #include "headerFile.h"
%}
%include "headerFile.h"
Run Code Online (Sandbox Code Playgroud)

该代码用作C++静态库,但也通过SWIG暴露给python.使用GCC/Clang进行正常编译效果很好.

但是,当使用SWIG包装库时,我收到一个错误:

headerFile.h:22:错误:语法错误 - 可能缺少分号.

我可以用以下方法替换方法声明:

unsigned int foo(unsigned int val) throw(std::invalid_argument);
Run Code Online (Sandbox Code Playgroud)

删除覆盖时,SWIG似乎可以工作,但我收到警告.我的印象是SWIG同时被throw和override的组合弄糊涂了.

这是SWIG的错误还是我想念的傻事?

注意:我非常清楚使用throw声明已被弃用,但这是SWIG获取有关异常的信息并为Python生成适当代码的方式.也许在SWIG中有更好/更新的方法吗?

c++ swig c++11

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

使用cmake交叉编译gRPC

我正在尝试使用cmake交叉编译gRPC。

我实际上做到了。不幸的是,我的方法涉及修补CMakeLists.txt。

问题是,当我尝试编译gRPC时,它使用的是他刚刚编译的protobuffer。它无法在x86计算机上运行ARM编译的可执行文件。

我设法通过在gRPCs主CMakeLists.txt中手动指定protoc和grpc_cpp_plugin的路径来编译它。它很脏,并且由于我想将gRPC作为子模块包括在内,因此我需要一种干净的方法来完成它。

有没有人设法使用cmake交叉编译gRPC?

c++ cmake cross-compiling grpc

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

奇怪的错误:在返回`()`的函数中不能使用`?`运算符

我试图在一个很小的程序中重现该问题(您可以在此处找到Rust REPL

#[macro_use]
extern crate quick_error;

quick_error! {
    #[derive(Debug)]
    pub enum Error {
        SomeError{
            description("SomeError")
        }
    }
}


pub struct Version {
    foo: u8,
}

pub struct Bar();

impl Bar {
    pub fn version() -> Result<Version, Error> {
        Ok(Version{foo: 1})
    }
}

fn main() {
    let tmp = Bar::version()?;
}
Run Code Online (Sandbox Code Playgroud)

尝试编译时,我得到以下信息:

error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
  --> src/main.rs:27:15
   |
27 | …
Run Code Online (Sandbox Code Playgroud)

rust

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

期权类型和早期收益。is_none()时返回错误

使用match(如中的bar)似乎是一种常见方法。

#[derive(Debug)]
pub enum MyErrors {
    SomeError,
}

fn foo(x: Option<u64>) -> Result<u64, MyErrors> {
    if x.is_none() {
      return Err(MyErrors::SomeError);
    } 

    // .. some long code where more options
    // are checked and matched 
    // The ok here is just so the code is simple and compiles
    Ok(x.unwrap() * 2)
}

fn bar(x: Option<u64>) -> Result<u64, MyErrors> {
    match x {
        None => {
            return Err(MyErrors::SomeError)?;
        }
        Some(v) => {
           // .. some long code where more options …
Run Code Online (Sandbox Code Playgroud)

rust

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

为什么"未来()是未来"是假的?

我很困惑,这不符合我的预期:

from concurrent.futures import Future

f = Future()

print(type(f))

if f is Future:
   print("Future")
else:
   print("Other")
Run Code Online (Sandbox Code Playgroud)

输出是:

<class 'concurrent.futures._base.Future'>
Other
Run Code Online (Sandbox Code Playgroud)

虽然我在期待:

<class 'concurrent.futures._base.Future'>
Future
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?为什么不是f is Future真的?

python

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

标签 统计

c++ ×3

python ×2

rust ×2

c++11 ×1

cmake ×1

cross-compiling ×1

grpc ×1

split ×1

stl ×1

substring ×1

swig ×1