小编Olu*_*ide的帖子

在局部变量值上设置Visual Studio(条件)断点

我正在尝试调试一种方法,该方法除了其他方面之外,还将项添加到方法本地的列表中.

但是,每隔一段时间,列表大小就会被设置为零"中游".我想设置调试器在列表大小变为零时中断,但我不知道如何,并且会欣赏有关如何执行此操作的任何指针.

谢谢.

c++ debugging stl visual-studio

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

哪个先设计?软件GUI或架构

"未来某个时候有软件产品的计划,我想知道设计软件产品的最佳方法.架构(即组件之间的组件和关系)首先还是GUI?

谢谢.

architecture

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

专门用于枚举类型参数的成员模板

在下面的代码中,Foo<T>::setValue适用于我的目的,除非在哪里T是一个名为TYPEeg Bar::TYPE和的枚举类Baz:TYPE.

因此,我会很感激,专门帮助Foo<T>::setValue不点名BarBaz,因为可能有几十个这样的类.

class Bar
{
public:
    enum TYPE{ ONE , TWO };
};

class Baz
{
public:
    enum TYPE{ SIX , TEN };
};

template<typename T>
class Foo
{
public:
    void setValue(){} // Need a different setValue if T is a class enum

private:
    T m_value;
};


int main()
{
    Foo<int> f1;
    Foo<Bar::TYPE> f2;
    Foo<Baz::TYPE> f3; 
    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

c++ templates template-specialization

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

重构所有类共有的方法

我有一个全局函数将一个对象(或类型Source)的相关位复制到另一个(类型Target),如下所示:

template<typename Source , typename Target>
void partialCopy( Source& source , Target& target )
{
    // perform copy
}
Run Code Online (Sandbox Code Playgroud)

我发现全局函数的问题在于,与成员函数不同,编码两个参数中的哪一个是源,哪个是目标时,不能立即清楚.因此,我想partialCopy()每个类中都有一个成员函数,如下所示:

struct Foo
{
    template<typename T>
    void partialCopy( T& target )
    {
        ::partialCopy( *this , target );
    }
};
Run Code Online (Sandbox Code Playgroud)

现在的问题是必须将成员函数复制到几十个类.这是一个可以容忍的复制和粘贴编程案例吗?我已经考虑过放入partialCopy一个头文件partialCopy.h并使用预处理器include将它'注入'到每个类中,如下所示:

struct Foo
{
    #include "partialCopy.h"
};


Foo f;
Bar b;
f.partialCopy( b );
Run Code Online (Sandbox Code Playgroud)

虽然这是有效的,但我从未在任何地方看到它,也不知道它是否不可接受.

我已经尝试将partialCopy成员函数放在公共基类中并继承它但这不起作用,因为this关键字将引用基类而不是派生类.

还有更好的选择吗?请指教.

编辑

static_cast在一个CRTP基类中对派生类执行a的John的建议(在一个被删除的线程中)可以很好地工作.@John请发一个答案,我会这样标记.

c++ refactoring templates member-functions

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

将指向派生类的方法的指针强制转换为指向基类方法的指针

指向派生类的方法的指针强制转换为指向基类方法的指针是合法的,即使基类没有声明任何方法,尤其是"casted"方法通过类型基类的对象调用,如下:

// works in VS 2008 and g++ 4.5.3
struct Base
{
};

struct Fuu : public Base
{
    void bar(){ std::cout << "Fuu::bar" << std::endl; }
    void bax(){ std::cout << "Fuu::bax" << std::endl; }
};

struct Foo : public Base
{
    void bar(){ std::cout << "Foo::bar" << std::endl; }
    void bax(){ std::cout << "Foo::bax" << std::endl; }
};

typedef void (Base::*PtrToMethod)();

int main()
{
    PtrToMethod ptr1 = (PtrToMethod) &Foo::bax;
    PtrToMethod ptr2 …
Run Code Online (Sandbox Code Playgroud)

c++ function-pointers

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

使用boost :: range :: sort

我很欣赏一个如何使用的例子boost::sort(我正在尝试对一个定制的对象容器进行排序,因此无法使用std::sort).文档中的示例非常少; 此外,我找不到任何有关如何创建的信息RandomAccessRange.

c++ sorting boost

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

函数定义在命名空间中的声明之前

下面的代码,其中函数定义预先声明其声明,在VS .NET 2008和Cygwin gcc 4.8.2中编译.这合法吗?

namespace N
{
    int init()      // Definition appears first
    {
        return 42;
    }       
}

namespace N
{
    int init();     // followed by declaration
    const int x = init();
}

int main()
{
}
Run Code Online (Sandbox Code Playgroud)

编辑

我想这与下面的编译并没有太大区别

void foo()
{
}

void foo();

int main()
{
}
Run Code Online (Sandbox Code Playgroud)

c++ namespaces forward-declaration

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

将指向外部类模板的成员函数的指针传递给嵌套类

我很难将指向成员函数的指针传递给Outer<T>::foo嵌套类的构造函数,Outer如下所示(另请参见ideone).

template<typename T1>
struct Outer
{
    void foo()
    {
    }

    Outer() : inner( &Outer::foo )  // ERROR: compiles without &Outer::foo and Inner( F f ), below
    {
    }

    template<typename T2, void (T2::*F)()>
    struct Inner
    {
        Inner( F f )    // ERROR
        {
        }
    };

    Inner<Outer,&Outer::foo> inner;
};

int main()
{
    Outer<int> outer;
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我开始怀疑这是否可能.

c++ templates nested-class

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

C++流插入运算符的返回类型是否需要是std :: ostream?

以下代码包含operator<<MSVC 2008和gcc 4.6.3上的编译重载.这合法吗?

#include <iostream>

struct Foo
{
    friend Foo operator<<( std::ostream& stream , Foo& foo );
    Foo operator<<( std::ostream& stream )
    {
        return *this;
    }
};

Foo operator<<( std::ostream& stream , Foo& foo )
{
    return foo;
}

int main()
{
}
Run Code Online (Sandbox Code Playgroud)

c++ operator-overloading ostream

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

在switch case语句中初始化数组

奇怪的是,我c在一个switch语句中初始化了以下数组,完全期望我的编译器说不,你不能这样做,但令我惊讶的是它在MSVC,GCC和Clang编译.在线示例

我假设标准允许它,在这种情况下我的问题是为什么?...考虑到case语句中不允许声明和初始化非数组.

int main()
{
    char ch;

    switch( ch )
    {
    case 'x':
        //int a = 42; // NOT OKAY
        break;

    case 'y':
        int b;
        b = 42;    // OKAY

    case 'z':
        int c[2] = { 0 , 1 };  // OKAY (Huh???)
        break;
    };
}
Run Code Online (Sandbox Code Playgroud)

c c++ arrays initialization switch-statement

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