小编BЈо*_*вић的帖子

如何调用基类构造函数?

我在Java中花了很多编程.你在那里调用你继承的类super();(你们都可能知道)

现在我有一个C++类,它有一个默认的构造函数,它接受一些参数.例:

class BaseClass {
public:
    BaseClass(char *name); .... 
Run Code Online (Sandbox Code Playgroud)

如果我继承了它,它会给我警告,没有适当的默认构造函数可用.那么super()在C++中有类似的东西,还是我必须定义一个初始化所有变量的函数?

c++ constructor

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

使用Makefile在编译中排除源文件

是否可以在Makefile中使用通配符函数在编译过程中排除源文件?

就像有几个源文件一样

src/foo.cpp
src/bar.cpp
src/...
Run Code Online (Sandbox Code Playgroud)

然后在我的makefile中,

SRC_FILES = $(wildcard src/*.cpp)
Run Code Online (Sandbox Code Playgroud)

但我想排除bar.cpp.这可能吗?

c++ makefile

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

为什么vector <bool> :: reference不会返回对bool的引用?

#include <vector>

struct A
{
    void foo(){}
};

template< typename T >
void callIfToggled( bool v1, bool &v2, T & t )
{
    if ( v1 != v2 )
    {
        v2 = v1;
        t.foo();
    }
}

int main()
{
    std::vector< bool > v= { false, true, false };

    const bool f = false;
    A a;

    callIfToggled( f, v[0], a );
    callIfToggled( f, v[1], a );
    callIfToggled( f, v[2], a );
}
Run Code Online (Sandbox Code Playgroud)

上面示例的编译会产生下一个错误:

dk2.cpp: In function 'int main()':
dk2.cpp:29:28: error: no …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-errors g++

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

如何检查operator ==是否存在?

我试图创建一个示例,它将检查operator==(成员或非成员函数)的存在.检查一个类是否有成员operator==很容易,但如何检查它是否有非成员operator==

这就是我所要做的:

#include <iostream>

struct A
{
    int  a;

    #if 0
    bool operator==( const A& rhs ) const
    {
        return ( a==rhs.a);
    }
    #endif
};
#if 1
bool operator==( const A &l,const A &r )
{
    return ( l.a==r.a);
}
#endif


template < typename T >
struct opEqualExists
{
    struct yes{ char a[1]; };
    struct no { char a[2]; };

    template <typename C> static yes test( typeof(&C::operator==) );
    //template <typename C> static yes test( …
Run Code Online (Sandbox Code Playgroud)

c++ sfinae

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

sizeof(void())是一个合法的表达式吗?

[5.3.3/1]开始,我发现:

sizeof运算符不应用于具有函数或不完整类型的表达式

[3.9/5]我发现:

不完全定义的对象类型和cv void是不完整的类型

无论如何,因为sizeof不评估它的操作数,我会说这sizeof(void())是一个合法的表达式(实际上GCC编译它,结果是1).
另一方面,从这里开始,void在讨论sizeof时没有提及,既没有提到具有大小1的类型,也没有提到具有实现定义大小的类型的列表.

因此问题是:是sizeof(void())一种法律表达吗?
是否保证大小等于1?
或者这是一个导致UB的法律表达,这就是全部?

c++ sizeof void language-lawyer

50
推荐指数
4
解决办法
3754
查看次数

有关使用CMK/CDash的gcov的详细指南?

我在我的项目中使用CMake并设置了一个用于连续/夜间构建的cdash服务器.一切运作良好,通过设置crontab,我们将每小时/每晚的构建/测试结果自动上传到我们的cdash服务器.

我的下一步是将测试覆盖率报告添加到构建中.我在http://www.cmake.org/Wiki/CTest:Coverage找到了这份文件,但坦率地说,它与实用指南相差甚远.

目前我已经添加了所需的标志(而不是-fprofile-arcs -ftest-coverage,我发现--coverage更好),编译过程生成.gcno文件.但后来我被卡住了.命令

make NightlyCoverage
Run Code Online (Sandbox Code Playgroud)

好像什么也没做.谁能告诉我接下来要做什么?我想要的结果是make NightlyCoverage,生成覆盖率报告并上传到cdash服务器.

c++ testing code-coverage cmake cdash

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

如何检查在给定进程的运行时加载了哪些共享库?

有没有办法检查哪些库是正在运行的进程?

更具体地说,如果程序使用dlopen加载某些共享库,则readelf或ldd不会显示它.是否有可能从正在运行的进程中获取该信息?如果有,怎么样?

c c++ linux shared-libraries

47
推荐指数
5
解决办法
5万
查看次数

我可以将普通文件链接到我的可执行文件吗?

一些框架(Qt,Windows,Gtk ...)提供了向二进制文件添加资源的功能.我想知道是否有可能在没有框架的情况下实现这一点,因为所有真正需要的是

  1. 包含二进制(数据段)内资源地址的符号
  2. 表示资源长度的符号
  3. 资源本身

如何使用gcc工具链实现这一目标?

c c++ linker gcc embedded-resource

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

如何检查枚举值是否有效?

我正在读取enum二进制文件中的值,并想检查该值是否真的是enum值的一部分.我该怎么做?

#include <iostream>

enum Abc
{
    A = 4,
    B = 8,
    C = 12
};

int main()
{
    int v1 = 4;
    Abc v2 = static_cast< Abc >( v1 );

    switch ( v2 )
    {
        case A:
            std::cout<<"A"<<std::endl;
            break;
        case B:
            std::cout<<"B"<<std::endl;
            break;
        case C:
            std::cout<<"C"<<std::endl;
            break;
        default :
            std::cout<<"no match found"<<std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

我是否必须使用switch操作员或有更好的方法吗?

编辑

我设置了枚举值,不幸的是我无法修改它们.更糟糕的是,它们不是连续的(它们的值为0,75,76,80,85,90,95,100等)

c++ enums

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

QT:模板化的Q_OBJECT类

是否有可能有一个模板类,它继承自QObject(并在其声明中有Q_OBJECT宏)?

我想创建像插槽适配器这样的东西,它会做一些事情,但插槽可以采取任意数量的参数(参数的数量取决于模板参数).

我只是尝试这样做,并得到链接器错误.我猜这个模板类没有调用gmake或moc.有没有办法做到这一点?也许通过显式实例化模板?

c++ qt templates signals-slots

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