小编Cae*_*sar的帖子

从C++ 11中的"switch"语句"返回"现在是错误的吗?

使用VS2012,我注意到一个switch已经工作了好几年的东西现在似乎在发布版本中被打破了,但在Debug版本中正常工作(或至少像以前一样).我无法看到代码的任何错误,所以我们会感谢一些关于returnswitch块中使用语句的正确性的反馈.

以下代码编译好,但在Win7 32位的Release版本中提供了错误的输出...

#include <stdio.h>
#include <tchar.h>

class CSomeClass
{
public:
    float GetFloat(int nInt)
    {
        printf("GetFloat() - entered\n");
        switch (nInt)
        {
        case 1 :
            printf("GetFloat() - case 1 entered\n");
            return 0.5F;
        case 0 :
            printf("GetFloat() - case 0 entered\n");
            return 1.0F;
        case 2 :
            printf("GetFloat() - case 2 entered\n");
            return 2.0F;
        case 3 :
            printf("GetFloat() - case 3 entered\n");
            return 3.0F;
        case 4 :
            printf("GetFloat() - case 4 entered\n");
            return 4.0F;
        }
        printf("GetFloat() - …
Run Code Online (Sandbox Code Playgroud)

c++ c++11 visual-studio-2012

24
推荐指数
3
解决办法
7357
查看次数

为什么一行中的多个作业被认为是不好的风格?

在C++中,您可以通过执行此操作来执行多个赋值

x = y = z = 10;
Run Code Online (Sandbox Code Playgroud)

然而,有很多人告诉我这是一种糟糕的风格,我不应该在没有给出理由的情况下使用它.

有人可以向我解释为什么这被认为是一种糟糕的风格?

c++ operators

15
推荐指数
3
解决办法
2万
查看次数

使用Eigen创建具有俯仰,偏航,滚动的旋转矩阵

如何使用具有特征库的俯仰,偏航,滚动创建旋转矩阵?

c++ math rotation matrix eigen

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

如何获得小时,分钟和秒

const boost::posix_time::ptime now= boost::posix_time::second_clock::local_time();

year_ = now.date().year();
month_ = now.date().month();
day_ = now.date().day();
Run Code Online (Sandbox Code Playgroud)

这就是我如何获得boost :: posix_time :: ptime的年,月和日,但我无法弄清楚如何获得小时,分钟和秒.你能帮帮我吗?

c++ boost boost-date-time

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

两个派生类的C++副本

我有一个基类和两个派生类,我需要将一个指向派生类对象的指针复制到另一个类中,就像示例一样.

class Base
{
public:
    Base(const Base& other);
}

class Derived1 :public Base
{
public:
    Derived1(const Derived& other): Base(other){...};
}

class Derived2: public Base
{
public:
    Derived2(const Derived& other): Base(other){...};
}

main()
{
    Derived 1 d1;
    Derived2 d2(d1)
}
Run Code Online (Sandbox Code Playgroud)

我尝试从Derived 1 ti base(允许向上转换)传递,然后到*dynamic_cast*Base到Derived2并调用复制构造函数,但它不起作用.我只需要在两个派生对象之间复制两个对象的Base部分.

c++ inheritance derived-class copy-constructor

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

试图访问空指针

#include <iostream>

int main()
{
    int* i = 0;
    int x = (*i);
    std::cout << x;
}
Run Code Online (Sandbox Code Playgroud)

当我编译并运行它时,上面的程序将崩溃Visual Studio 2010,我知道它崩溃,因为我将指针设置为0.

我想知道的是,访问null pointer标准中定义的C++,还是未定义的,我很幸运,因为我的编译器/计算机/操作系统,我的程序崩溃了

如果定义了,当我尝试访问空指针时C++会保证什么?

c++ null pointers

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

Visual Studio 2012性能分析无法加载符号文件

我已经使用Visual Studio 2012性能分析来分析我的C++代码很长一段时间,但是最近当我尝试使用它时似乎无法加载符号,因为当我尝试查看详细信息时出现此错误

找不到匹配的符号.选择"符号设置.."链接以添加符号文件位置,然后重新加载报告.

我已经访问过,Options -> Debugging -> Symbols但我不知道我需要添加什么以便正确加载符号.

目前在该菜单中Symbol file (.pdf) locations:有一个选项,它被调用Microsoft Symbol Servers并被选中.在Cashe symbols in this directory:我可以看到它被设置在临时文件夹中,但当我去那个文件夹时,我看到它是空的.

我需要添加什么才能正确加载符号?

c++ visual-studio visual-studio-2012

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

调试嵌入式Lua 5.2.2代码

如何调试嵌入在C++应用程序中的Lua 5.2.2代码?

我已经看过这个问题,其中提供的所有IDE都处理5.1和更低版本,当我尝试在5.2.2中使用它们时它们会崩溃.

c++ ide debugging lua lua-5.2

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

C/C++数学运算顺序

所以我知道C++有一个运算符优先级

int x = ++i + i++;
Run Code Online (Sandbox Code Playgroud)

未定义,因为pre ++和post ++处于同一级别,因此无法确定哪个将首先计算.但我想知道的是,如果

int i = 1/2/3;
Run Code Online (Sandbox Code Playgroud)

未定义.我问的原因是因为有多种方法可以看(1/2)/ 3 OR 1 /(2/3).我的猜测是它是一个未定义的行为,但我想确认一下.

c c++ math operator-precedence

5
推荐指数
3
解决办法
7913
查看次数

std容器是否具有插入任何容器的通用方法?

我目前正在尝试做的是扩展C ++ std容器的功能。所以我已经做到了

template<typename T>
class Queryable : public T
{
public:
    template<typename lambdaFunc>
    Queryable<T>Where(const lambdaFunc& w)
    {
        Queryable<T> whereVecObjects;

        for(auto iterObject = this->cbegin();
            iterObject != this->cend();
            ++iterObject)
        {
            bool add = w(*iterObject);
            if(add == true)
            {
                whereVecObjects.push_back(*iterObject);
            }
        }

        return whereVecObjects;
    }           
};
Run Code Online (Sandbox Code Playgroud)

因此,该类所做的是它在模板中接受一个std容器并创建一个从其继承的类。然后,它定义要在容器上扩展的功能。

现在,我在上面提供的这个示例可以正常工作,如果您使用的std::vector是这样

int main()
{
    Queryable<std::vector<int>> vecInt;
    vecInt.push_back(1); vecInt.push_back(2); vecInt.push_back(3); vecInt.push_back(4); vecInt.push_back(5); 
    Queryable<std::vector<int>> filteredVec = vecInt.Where([](int i){ return i > 3; } );
    for(auto iter = filteredVec.begin();
        iter != filteredVec.end();
        ++iter)
    {
        std::cout << …
Run Code Online (Sandbox Code Playgroud)

c++ containers stl insert

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