小编Dav*_*ley的帖子

C++ 03和C++ 11之间未定义行为的区别是什么?

新标准具有与旧标准不同的未定义行为.例如,新的排序规则意味着现在定义了一些过去未定义的算术运算(出于诸如序列点之间的多次写入的原因).

那么,我们需要重新学习未定义的行为?

c++ undefined-behavior c++11 c++03

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

在C中没有'return'的情况下从键盘获取输入

如何在键盘中输入输入,而不在C/Mac Os中按"返回"

c macos

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

我在哪里翻译MFC消息框

我正在将MFC应用程序本地化为日语,并且资源正常运行.

我当前的问题是,当我使用AfxMessageBox或者MessageBox,对话框标题和按钮消息以英文出现时,我还没有找到任何改变它的地方.

我没有找到任何有用的搜索MSDN或谷歌.

所以,

这有用吗?Windows是否提供日语,阿拉伯语和俄语的"确定"或"是/否"按钮?

如果没有,我可以指定更改这些内容?

编辑:我去了MessageBoxEx,写一个包装类,使其使用方便AfxMessageBox.它看起来MB_OK在英语和日语中都显示为"OK",但是其他按钮选项MB_YESNO被翻译成我认为正确的日语.这是一个相当小的翻译应用程序,我们可能希望对较大的应用程序使用自动化的东西.

mfc visual-c++

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

C++类设计 - 轻松初始化/构建对象

使用C++我构建了一个具有许多setter函数的Class,以及在运行时可以连续调用的各种函数.所以我最终得到的代码如下:

A* a = new A();
a->setA();
a->setB();
a->setC();
...
a->doA();
a->doB();
Run Code Online (Sandbox Code Playgroud)

不是,这很糟糕,但我不喜欢一遍又一遍地输入"a->".
所以我重写了我的类定义,如下所示:

class A{
public:
    A();
    virtual ~A();

    A* setA();
    A* setB();
    A* setC();
    A* doA();
    A* doB();

    // other functions

private:

    // vars
};
Run Code Online (Sandbox Code Playgroud)

那么我可以像我一样初始化我的课程:( 方法1)

A* a = new A();
a->setA()->setB()->setC();
...
a->doA()->doB();
Run Code Online (Sandbox Code Playgroud)

(我更喜欢它,因为它更容易编写)
为了更精确地实现这一点,你可以看到我在http://ken-soft.com/?p=234上写的SDL Sprite C++ Class

一切似乎都很好.但是,我对这种方法的任何反馈感兴趣.我注意到一个问题.如果我初始化我的班级:( 方法2)

A a = A();
a.setA()->setB()->setC();
...
a.doA()->doB();
Run Code Online (Sandbox Code Playgroud)

然后我有各种内存问题,有时事情不能正常工作(你可以通过改变我在Sprite Demo的main.cpp中初始化所有Sprite对象的方式来看到这一点).
这是正常的吗?或者行为应该是一样的吗?
编辑 setter主要是为了让我的生活更容易初始化.我的主要问题是方法1和方法2对我来说有什么不同?

编辑: 这是一个getter和setter示例:

Sprite* Sprite::setSpeed(int i) {
    speed = i;
    return …
Run Code Online (Sandbox Code Playgroud)

c++ class-design initialization

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

C/C++ - 覆盖默认函数

我有以下问题:

难道微软的Visual Studio (我使用的是2008 SP1)提供任何方法来覆盖非标准C函数,例如malloc,memcpy

假设我有一些外部构建的库,其中包含malloc.objmemcpy.obj.图书馆被称为library.lib.

我应该如何构建我的项目,以便编译器使用我的(覆盖)版本malloc()memcpy()例程而不是提供的那些(我假设它们共享相同的语法)

整个这个问题的关键在于改变malloc我的项目中的每一个而不使用类似my_malloc或类似的名称别名,这样我就可以比较性能.

这可能吗?

谢谢.

c c++ malloc visual-studio-2008

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

停止C#语言国际化

我在这里有一个C#.NET程序,其中包含以下用于加载字符串的行:

m_resource_manager = new ResourceManager("Foo.FooStrings", Assembly.GetExecutingAssembly());
Run Code Online (Sandbox Code Playgroud)

正如我所推荐的那样.现在,我已经要求停止这些翻译,并用英语做所有事情.我想尽可能做出低影响和可逆的变化.

我想改变这一行,所以它总是加载英文字符串表,但我不知道要指定什么,或者说这是否是一个好方法.

这是坚持英语的好方法吗?如果是这样,我该怎么写呢?如果没有,我该怎么办呢?

c# internationalization

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

G ++ 4.4"未初始化"变量

如果操作系统与此有关,我在Ubuntu 10.10(64位)上使用g ++.我看到一些奇怪的东西所以我决定检查并出于某种原因这段代码

#include <iostream>

int main()
{
    int a;

    std::cout << a << std::endl;

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

总是打印0.显然,g ++会将未初始化的变量自动初始化为相应的空值.问题是我想要关闭这个功能,或者至少让g ++显示关于使用未初始化变量的警告,因为这样我的代码在VS上编译时将无法正常工作.除此之外,我非常确定C++标准规定一个未用某个值隐式初始化的变量在所有可能的值中都有一个未定义的值,实际上每次执行程序时都应该是不同的,因为它的不同部分每次执行时都会使用操作内存.

明确的问题:有没有办法让g ++显示未初始化变量的警告?

c++ initialization g++

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

数据类型和结构

我正在复习测试,我被这个问题困扰了.

请考虑以下声明:

enum CategoryType {HUMANITIES, SOCIALSCIENCE, NATURALSCIENCE}; 
const int NUMCOURSES = 100; 
struct CourseRec 
{ 
         string courseName; 
         int courseNum; 
         CategoryType courseCategory; 
}; 
typedef CourseRec CourseList [NUMCOURSES]; 
CourseList courses; 
int index1, index2; 
Run Code Online (Sandbox Code Playgroud)
  1. 表达式[index1] .courseName [index2]的数据类型是什么?

(a)CourseList(b)CourseRec(c)string(d)char(e)none; 表达式在语法上无效

我认为答案是字符串,因为courseName是一个字符串,甚至可能是CourseRec,因为它在结构中,但答案是(d)char.为什么这是char数据类型?任何帮助是极大的赞赏.

c++ struct types

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

Smartbear Code Collaborator GUI客户端无法识别Subversion存储库

我正在使用Windows 7 Professional和Subversion与TortoiseSVN,并尝试使用Code Collaborator v6.0.6013.

当我启动GUI客户端时,我需要告诉它SCM配置是什么.下拉菜单只有AccuRev,CMVC,CVS和ClearCase,因此我在本地位置指定Subversion项目,因此可以自动检测.在这台计算机上,它不会导致(无)的SCM,(无)的配置,在几个目录中的任何一个,所有这些我可以做所有常见的Subversion内容.

它完美地适用于办公室中的每个其他系统,检测Subversion和一些有用的选项设置.尽管重新启动系统并多次卸载/重新安装客户端,但它不适用于此.我没有在网上或Smartbear的网站上找到任何关于此类事物的参考.

有人知道可能会发生什么吗?有什么建议可以尝试下一步吗?

svn tortoisesvn code-collaborator

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

我试图有一个墙跟随机器人,但在我的范围内没有声明的名称有错误我需要帮助

#include <iostream>
#include <libplayerc++/playerc++.h>

using namespace std;
int main(int argc, char *argv[])

{
using namespace PlayerCc;  
PlayerClient    robot("localhost");  
BumperProxy      bp(&robot,0);  
Position2dProxy pp(&robot,0);
pp.SetMotorEnable(true);


for(;;)
    double turnrate, speed;
double error;
bool wall;

motor_a_speed(0);
motor_c_speed(0);

while(1) {

    front_bumper = SENSOR_2;
    left_bumper = SENSOR_3;

    if (front_bumper > 2) {

        if (left_bumper < 3) {

            motor_a_speed(5);

            motor_c_speed(drive_speed);
            motor_a_dir(fwd);
            motor_c_dir(fwd);

        }

        else {

            motor_a_speed(drive_speed);

            motor_c_speed(5);
            motor_a_dir(rev);
            motor_c_dir(rev);

        }

    }

    else {

        motor_a_speed(drive_speed);

        motor_c_speed(drive_speed);
        motor_a_dir(brake);
        motor_c_dir(brake);
        mrest(100);

        cputs("bump");

        motor_a_dir(fwd);
        motor_c_dir(rev);
        msleep(450);


        cputs("right");

        motor_a_speed(10);
        motor_a_dir(fwd);
        motor_c_dir(fwd);
        mrest(1300); …
Run Code Online (Sandbox Code Playgroud)

c++ robotics

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