小编miq*_*elm的帖子

带有std :: is_base_of的派生类的C++模板函数

我有创建函数的问题,对于给定的类型,如果它是从其他人那里做的事情,而对于所有其他情况做其他事情.我的代码:

class BaseClass {};
class DerivedClass : public BaseClass {};

template <typename T>
void Function(typename std::enable_if<std::is_base_of<BaseClass, T>::value, T>::type && arg) {
    std::cout << "Proper";
}

template <typename T>
void Function(T && arg) {
    std::cout << "Improper";
}

void test() {
    Function(DerivedClass{});
}
Run Code Online (Sandbox Code Playgroud)

对于班级DeriviedClass和其他基于BaseClass我想称功能couting Proper,但它couts Improper.有什么建议?

c++ templates metaprogramming c++11

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

使用C++ Catch测试浮点std :: vector

在Catch C++单元测试框架中是否有可能比较基于浮点类型的std :: vectors?我知道我可以比较两个容器和每个元素的大小(使用约),但这很麻烦.

积分类型向量的比较适当地工作.

现在,我必须使用这样的结构

REQUIRE(computed.size() == expected.size());
for (size_t i = 0; i < computed.size(); ++i)
    REQUIRE(computed[i] == Approx(expected[i]));
Run Code Online (Sandbox Code Playgroud)

但我想使用一个衬垫(它适用于整体类型):

REQUIRE(computed == expected);
Run Code Online (Sandbox Code Playgroud)

c++ vector c++11 catch-unit-test

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

取决于类型C++的不同值

我想根据输入变量的类型有不同的变量值.码:

template <typename T>
int getValue(vector<T> & data)
{
    return something; // There should be 0 for int and 1 for double
}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何实现这样的功能?

c++ generic-programming

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

Qt C++ QTimer不调用处理程序

我在Qt C++中遇到QTimer问题,在我的代码中没有调用timeoutHandler().谁能告诉我为什么以及如何解决它?

Test.h

class Test : public QObject
{
    Q_OBJECT
private:
    static bool timeOuted;
public:
    explicit Test(QObject *parent = 0);
    virtual ~Test();
public slots:
    static void handleTimeout();
};
Run Code Online (Sandbox Code Playgroud)

TEST.CPP

void Test::run()
{
    QTimer::singleShot(3000, this, SLOT(handleTimeout()));
    while(!timeOuted);
    if(timeOuted)
    {
        timeOuted = false;
    }
    else
    {
       /* some work */
    }
}

bool Test::timeOuted = false;

void Test::handleTimeout()
{
    static int i = 0;
    timeOuted = true;
    qDebug() << "TimeOuted " << i++;
}
Run Code Online (Sandbox Code Playgroud)

c++ qt

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