小编Seb*_*mer的帖子

在这种情况下,为什么编译器会选择不正确的函数重载?

我正在尝试Sean Parent在GoingNative 2013上的演讲中提出的代码 - "继承是邪恶的基础".(最后一张幻灯片的代码可在https://gist.github.com/berkus/7041546获得

我试图自己实现相同的目标,但我无法理解为什么下面的代码不会按照我的预期行事.

#include <boost/smart_ptr.hpp>
#include <iostream>
#include <ostream>

template <typename T>
void draw(const T& t, std::ostream& out)
{
    std::cout << "Template version" << '\n';
    out << t << '\n';
}

class object_t
{
public:
    template <typename T>
    explicit object_t (T rhs) : self(new model<T>(rhs)) {};

    friend void draw(const object_t& obj, std::ostream& out)
    {
        obj.self->draw(out);
    }

private:
    struct concept_t
    {
        virtual ~concept_t() {};
        virtual void draw(std::ostream&) const = 0;
    };

    template <typename T>
    struct model …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance templates language-lawyer argument-dependent-lookup

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

Numpy和matlab polyfit产生差异

在示例性数据集上调用numpy.polyfit和matlab polyfit函数时,我得到了不同的结果:

Python3.2:

(Pdb) a_array = [1, 2, 4, 6, 8,7, 9]
(Pdb) numpy.polyfit( range (len (a_array)), a_array, 1)
array([ 1.35714286,  1.21428571])
Run Code Online (Sandbox Code Playgroud)

Matlab的:

a_array = [1, 2, 4, 6, 8,7, 9]
polyfit(1:1:length(a_array), a_array, 1)

ans =
    1.3571   -0.1429
Run Code Online (Sandbox Code Playgroud)

这显然不是数字错误.

我假设某些特殊选项的默认值(如std函数中的ddof)在Python和matlab之间有所不同,但我找不到它.或许我应该使用另一个版本的Python的polyfit?

如何在Python Numpy和Matlab中获得相同的polyfit结果?

python matlab numpy

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

Makefile通用目标规则

我正在尝试改进天真的解决方案(用于编译目标的单个规则和用于将所有先前目标链接在一起的附加规则),我使用了我的makefile.我想出了以下Makefile(剪辑):

.PHONY: clean

BASE_DIR = ../

CC = gcc
CROSS_COMPILE = arm-none-eabi-
CFLAGS =-g -I${BASE_DIR}/include 
LDFLAGS =-L${BASE_DIR}/lib -Ttarget.ld -nostdlib 

SOURCES = first.c second.c third.c fourth.c
OBJECTS = $(SOURCES:.c=.o)
EXECUTABLE = $(OBJECTS:.o=)

all: $(EXECUTABLE)

%:
    ${CROSS_COMPILE}$(CC) $(CFLAGS) $(LDFLAGS) $*.c -o $*

clean:
    rm ${EXECUTABLE}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我想分开编译和链接过程.因此我尝试将其修改如下:

.PHONY: clean

BASE_DIR = ../

CC = gcc
CROSS_COMPILE = arm-none-eabi-

CFLAGS =-c -g -I${BASE_DIR}/include 
LDFLAGS =-L${BASE_DIR}/lib -Ttarget.ld -nostdlib 

SOURCES = first.c second.c third.c fourth.c
OBJECTS = $(SOURCES:.c=.o)
EXECUTABLE = $(OBJECTS:.o=)

all : $(EXECUTABLE)

%.o : …
Run Code Online (Sandbox Code Playgroud)

makefile

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

删除VIM中当前单词后的剩余行

我想删除光标当前所在单词后面的文本.例如

The quick brown fox jumps over the lazy dog
     ^ the cursor is here
The quick 
        ^ the desired result
Run Code Online (Sandbox Code Playgroud)

eD是非常接近我想要完成的,但它也删除了光标所在的角色.<C-U>确切的工作,但从光标到行的开头.是否有任何组合可以做同样的前进?

除了创建另一个键映射之外,还有其他方法可以实现吗?在vim中有很多快捷方式,所以避免创建另一个快捷方式会很棒.

vim

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

在行的末尾粘贴文本,在vim之间有一个空格

我正在尝试找到一种最快的方法来粘贴文本末尾的文本,但在前一个EOL和新文本之间有一个空格.目前的方法是a <ESC>po<ESC>pkJ.有没有其他更快的方法来实现这个目标?我在考虑像"粘贴胶水"这样的东西?

Original: The quick brown fox 
after $p: The quick brown foxjumps over the lazy dog
desired : The quick brown fox jumps over the lazy dog
Run Code Online (Sandbox Code Playgroud)

vim

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

c ++ 11为什么这个移动构造函数不起作用?

我写了下面发布的代码.我希望能够在实例之间移动向量的内容LargeClass.正在使用移动构造函数,但不是移动我只获得副本.

为什么移动语义不能像预期的那样工作?

码:

#include <iostream>
#include <vector>

class LargeClass
{
public:
    explicit LargeClass (void): numbers(20, 10) 
    {
    }
    LargeClass (const LargeClass &rhs): numbers(rhs.numbers)
    { 
        std::cout << "Using LargeClass copy constructor" << '\n';
    }
    LargeClass (const LargeClass &&rhs): numbers(std::move(rhs.numbers))
    { 
        std::cout << "Using LargeClass move constructor" << '\n';
    }

    const int* getNumbersAddress(void) const
    {
        return (numbers.data());
    }

private:
    std::vector<int> numbers;
};

int main()
{
    LargeClass l1;
    std::cout << "l1 vector address: " << l1.getNumbersAddress() << '\n';

    LargeClass l2(l1);
    std::cout …
Run Code Online (Sandbox Code Playgroud)

move c++11

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