小编Mic*_*rst的帖子

如何在C++中获取运行时给定元素的模板类型?

我正在设计一个Array能够容纳任何类型对象的简单类,比如可以在一个对象中保存多种类型数据的向量.(这是出于学习目的.)

我有一个名为的空基类Container:

class Container {};
Run Code Online (Sandbox Code Playgroud)

一个模板化的子类称为Object:

template <class T>
class Object : public Container {
    T& object;
public:
    Object(T& obj = nullptr) : object(obj) {}
};
Run Code Online (Sandbox Code Playgroud)

我有一个Array类,其中包含一个vector指向Containers 的指针,用于保存Objects:

class Array {
    std::vector<Container *> vec;
public:
    template <class T>
    void add_element(const T&);
    auto get_element(int);
};
Run Code Online (Sandbox Code Playgroud)

add_element将元素存储到Objects中并将它们放入vec:

template <class T>
void Array::add_element(const T& element)
{
    vec.push_back(new Object<T>(element));
}
Run Code Online (Sandbox Code Playgroud)

get_element从中移除元素Object并将其传递回调用者.这就是我的问题所在.为了从中删除元素Object …

c++ polymorphism templates

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

C++中的Realloc等价物

是的,另一种reallocstd::vector问题.我知道你要说什么,我同意,忘记手动内存分配,只需使用一个std::vector.不幸的是,我的教授禁止我使用STL的任何东西进行这项任务.

所以,是的,我有一个动态数组,T我需要它可以调整大小,我不能使用std::vector.我可以回到黑暗时代,malloc与家人一起完成整个事情,但如果我可以使用new那将是非常棒的.

我已经阅读了大量的std::vector帖子,其中每个人都说"不,你不能这样做,使用",但它们都是在2011年8月之前发布的,我希望自C +曙光以来可能有所改变的希望+11.那么告诉我,我是幸运的,还是我必须恢复到C风格的内存分配?

c++ dynamic-memory-allocation

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

C++标准符合AVR-GCC

我正在学习编程我的Arduino,但我在C++中有相当扎实的背景,这意味着我非常失望地发现我无法使用C++标准库.我一直在四处寻找确切原因,到目前为止唯一合理的解释是AVR-GCC不符合C++语言标准.

现在,我知道大多数编译器都与标准版略有偏差,但我认为必须有一些非常大的东西将AVR-GCC与GCC,Clang或我之前使用的任何其他编译器区分开来.像一些完全缺失的重要特征,或者其他东西.例如,我必须有充分的理由不能使用std::vector.无缘无故地离开是太有用了.

那是什么?AVR-GCC方言的巨大漏洞是什么使得C++标准库在Arduino上无法工作?而且我要求的不仅仅是好奇心,因为如果语言中有巨大的漏洞,那么我需要先了解它们,然后才会陷入一些我没想到的未定义的行为.

c++ arduino avr-gcc c++-standard-library

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

如何在Ruby中增加/减少所有可能值的字符?

我有一个长度为一个字符的字符串,可以是任何可能的字符值:

irb(main):001:0> "\x0"
=> "\u0000"
Run Code Online (Sandbox Code Playgroud)

我认为这可行:

irb(main):002:0> "\x0" += 1
SyntaxError: (irb):2: syntax error, unexpected tOP_ASGN, expecting $end
"\x0" += 1
        ^            from /opt/rh/ruby193/root/usr/bin/irb:12:in `<main>'
Run Code Online (Sandbox Code Playgroud)

但是,正如你所看到的,它没有.如何增加/减少我的角色?


编辑:

Ruby似乎没有设置这样做.也许我正以错误的方式接近这一点.我想用8位块来操作原始数据.我怎样才能最好地完成那种操作?

ruby

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

Rust中的'@'符号有什么作用?

我忘记指定参数的类型,错误消息如下:

error: expected one of `:` or `@`, found `)`
 --> src/main.rs:2:12
  |
2 | fn func(arg)
  |            ^ expected one of `:` or `@` here
Run Code Online (Sandbox Code Playgroud)

这就提出了一个问题:@符号可以做什么?我不记得阅读有关将@符号用于任何东西的信息。我也做了一些谷歌搜索,却找不到任何东西。怎么@办?

rust

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

Cloud9 IO禁用键绑定或Cloud9替代方案

我找到了Cloud9.io,我将用它来教人们用html,css,javascript和php编写代码,但是有一个问题.我们都是捷克人,如果我们想创造{,我们按Right-Alt+ B},我们按Right-Alt+ N.但是,这是Cloud9.io中的一个问题,每当我们按下时},它都会认为我们要创建新文件,因为我们按Rigth-Alt+ N.那么有没有办法禁用这些键绑定,或编辑他们的JS,所以它不会使用任何键绑定?

或者,如果不可能,您是否知道Cloud9.io的任何替代方案,我可以用它来教别人编码,这样他们就可以看到我的编码,它有聊天,他们也可以编辑他们可以看到的文件.

谢谢.

html javascript keyboard cloud9-ide

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

Cloud9 IDE中的分屏

Cloud9中是否可以有一个水平分屏(即两个文件打开,一个在左边,一个在右边)?如果是这样,怎么样?

cloud9-ide

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

在Ruby方法中捕获变量

在CoffeeScript中:

f = ->
  v = 5
  g = ->
    v
  g()

f() # returns 5 as expected
Run Code Online (Sandbox Code Playgroud)

在Ruby中:

def f
  v = 5
  def g
    v # undefined local variable or method `v' for main:Object (NameError)
  end
  g
end
f
Run Code Online (Sandbox Code Playgroud)

好吧,显然JavaScript函数被设置为捕获它们创建范围内的变量,但Ruby的方法却没有.有没有办法让Ruby方法在这方面像JavaScript函数一样?

javascript ruby closures coffeescript

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

如何获取“当前系统时间”?

的文档SKScene -update如下: 文档

“当前系统时间”到底是什么?除了 via 之外如何获取它SKScene -update

我已经尝试过CFAbsoluteTimeGetCurrent(),但显然

返回当前系统绝对时间[,即]相对于绝对参考日期 2001 年 1 月 1 日 00:00:00 GMT 以秒为单位测量。

并且与“当前系统时间”不同,根据我的测试,“当前系统时间”的值比“当前绝对时间”小几个数量级。

time nstimeinterval sprite-kit skscene swift

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

在Swift中调用可选函数

我正试图找出一种通过数字动态调用方法的方法.这是我正在做的简化版本.

class C {

    func a() {}
    func b() {}

    let f = [0: a, 1: b]

    func call(n: Int) {
        f[n]?()
    }
}

let c = C()

c.call(0)
Run Code Online (Sandbox Code Playgroud)

当我在操场上跑步时,我得到了

Playground execution failed: error: <REPL>:10:13: error: could not find an overload for 'subscript' that accepts the supplied arguments
    f[n]?()
    ~~~~^~~
Run Code Online (Sandbox Code Playgroud)

如果我跑了

func a() {}
func b() {}

let f = [0: a, 1: b]

f[0]?()
Run Code Online (Sandbox Code Playgroud)

直接没有包含类,它按预期工作.这是怎么回事?

optional swift

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