小编nak*_*iya的帖子

使用DLL函数是否有任何性能?

正如标题所说,与普通函数相比,调用dll函数是否有一个性能?该DLL将被加载dlopen.编辑:忽略dlsym时间,因为我每个功能只执行一次.

c++ linux g++

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

使用虚拟析构函数使非虚函数进行v表查找吗?

正是这个话题所要求的.还想知道为什么非CRTP的常见例子没有提到virtualdtor.

编辑:伙计们,请发布关于CRTP问题,谢谢.

c++ oop crtp vtable

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

如何从界面中删除不需要的功能

我有一个接口类MyFunction.此类中有三个函数,具有以下签名:

virtual bool Eval(int& iReturnVal, size_t szArgumentCount, list<Param> lParameterList) = 0;
virtual bool Eval(double& dReturnVal, size_t szArgumentCount, list<Param> lParameterList) = 0;
virtual bool Eval(char*& zReturnVal, size_t szArgumentCount, list<Param> lParameterList) = 0;
Run Code Online (Sandbox Code Playgroud)

现在,任何实现MyFunction只需要实现其中一个函数,具体取决于它需要返回什么类型的值.但即使其他两个函数是这样的,我也必须实现所有3个函数:

virtual bool Eval(double& dReturnVal, size_t szArgumentCount, list<Param> lParameterList){return false;}
Run Code Online (Sandbox Code Playgroud)

哪个看起来不那么好.或者,我可以在界面中声明这样的所有三个函数:

virtual bool Eval(int& iReturnVal, size_t szArgumentCount, list<Param> lParameterList){return false;}
virtual bool Eval(double& dReturnVal, size_t szArgumentCount, list<Param> lParameterList){return false;}
virtual bool Eval(char*& zReturnVal, size_t szArgumentCount, list<Param> lParameterList){return false;}
Run Code Online (Sandbox Code Playgroud)

这看起来也很难看.这两个中不那么丑陋的是什么?或者有更好的方法吗?

编辑:

关于D Krueger的方法:

#include <iostream>

using …
Run Code Online (Sandbox Code Playgroud)

c++ coding-style

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

获取对象参数或使用成员对象更好吗?

我有一个类,我可以像这样写:

class FileNameLoader
{
     public:
         virtual bool LoadFileNames(PluginLoader&) = 0;
         virtual ~FileNameLoader(){}
};
Run Code Online (Sandbox Code Playgroud)

或这个:

class FileNameLoader
{
     public:
         virtual bool LoadFileNames(PluginLoader&, Logger&) = 0;
         virtual ~FileNameLoader(){}
};
Run Code Online (Sandbox Code Playgroud)

第一个假定Logger&在实现中有一个成员FileNameLoader.第二个没有.但是,我有一些类有很多内部使用的方法Logger.所以第二种方法会让我在这种情况下编写更多代码.Logger目前是一个单身人士.我的猜测是它会保持这种状态.这两者中更"美丽"的是什么?为什么?通常的做法是什么?

编辑:如果这个班级没有被命名Logger怎么办?:).我也有Builder.那怎么样?

c++ oop

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

这个函数定义是什么意思?

此功能定义可在此处找到.:

static void (*resolve_memcpy (void)) (void)
{
    return my_memcpy; // we'll just always select this routine
}
Run Code Online (Sandbox Code Playgroud)

我不明白这意味着什么.

c c++

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

STL - 在<algorithm>中使用成员函数或函数?

我想到了这个问题,由于我得到了以下问题的一些答案,表明我可以使用vector<T>::assigncopyback_insert_iterator 这里.我的问题是,使用一种方法比另一种方法有什么缺点和优点?

c++ stl

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

尝试使用RAII捕获?

我有一个类有一些方法,如下(和更多):

    template<class T>
    Logpp& operator<<(T const& obj)
    {
        *p_Stream << obj ;
        return *this ;
    }

    Logpp& operator<<(char const* zString)
    {
        *p_Stream << zString ;
        return *this ;
    }

    Logpp& operator<<(std::ostream& (*manip)(std::ostream&))
    {
        *p_Stream << manip;
        return *this ;
    }
Run Code Online (Sandbox Code Playgroud)

我想将函数体包含在表单的try catch块中:

    Logpp& operator<<(std::ostream& (*manip)(std::ostream&))
    {
        try
        {
            *p_Stream << manip;
            return *this;
        }
        catch(ios_base::failure& e)
        {
            //MyException has a stringstream inside and can use operator<<
            throw MyException("IO failure writing to log file : ") << e.what() << endl;
        } …
Run Code Online (Sandbox Code Playgroud)

c++ exception-handling

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

QtridLayout中的Qt空格列?

我有以下代码,我在其中放置一个按钮和一个文本框QGridLayout.注意我使用第3列和第4列来放置它们.

    QGridLayout *insAddPanel = new QGridLayout();
    {
        QLineEdit* ledInstrumentName = new QLineEdit();
        insAddPanel->addWidget(ledInstrumentName, 0, 3);

        QPushButton* btnAddInstrument = new QPushButton();
        btnAddInstrument->setText("Add");
        insAddPanel->addWidget(btnAddInstrument, 0, 4);
    }
    mainLayout->addLayout(insAddPanel);
    ......
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我会得到这样的结果:

在此输入图像描述

我希望文本编辑和按钮只占用可用水平空间的2/5.这就是我将它们放在第3和第4列的原因.由于这不起作用,我该如何完成?在Qt中有类似空的空间小部件吗?我搜索但没找到它.

c++ layout qt

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

从头到尾不起作用,就像我期望的那样

[18]> (position 3 '(1 2 3 4 5 6 7 8) :from-end nil)
2
[19]> (position 3 '(1 2 3 4 5 6 7 8) :from-end t)
2
Run Code Online (Sandbox Code Playgroud)

该怎么办?

lisp common-lisp

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

当存根模拟"ISession"对象时抛出异常

我有以下代码,我尝试存根ISession.Query<UnitModel>().

var unitList = new List<UnitModel>()
            {
                new UnitModel(){Name = "meters", Symbol="m"},
                new UnitModel(){Name="grams", Symbol="g"}
            };

MockRepository.GenerateMock<ISession>().Stub(x => x.Query<UnitModel>()).Return(unitList.AsQueryable<UnitModel>());
Run Code Online (Sandbox Code Playgroud)

运行时,会抛出异常:

System.InvalidOperationException : Type 'System.Linq.EnumerableQuery`1[[MIB.DomainModels.UnitModel, MIB, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' doesn't match the return type 'NHibernate.Engine.ISessionImplementor' for method 'ISession.GetSessionImplementation();'
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?我应该怎么去捣蛋ISession.Query<UnitModel>()

NHibernate 3.3.0.4000

编辑: UnitModel课程:

public class UnitModel
{
    public virtual string Name { get; set; }
    public virtual string Symbol { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

c# nhibernate rhino-mocks

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

标签 统计

c++ ×8

oop ×2

c ×1

c# ×1

coding-style ×1

common-lisp ×1

crtp ×1

exception-handling ×1

g++ ×1

layout ×1

linux ×1

lisp ×1

nhibernate ×1

qt ×1

rhino-mocks ×1

stl ×1

vtable ×1