小编And*_*rew的帖子

多线程环境中的静态局部变量初始化

假设有一个函数(可能是成员函数)

SomeType foo()
{
    static SomeType var = generateVar();
    return var;
}
Run Code Online (Sandbox Code Playgroud)

var如果foo将同时从多个线程"第一次"调用,将如何初始化?

  1. 是否保证generateVar()在任何情况下只调用一次(如果使用的话)?
  2. 是否保证foo在任何情况下多次调用时都会返回相同的值?
  3. 原始类型或非原始类型的行为是否存在差异?

c++ multithreading initialization c++11 c++03

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

c ++多重继承转换

我有一节课:

class Base;
Run Code Online (Sandbox Code Playgroud)

我也有一个界面

class Interface;
Run Code Online (Sandbox Code Playgroud)

接下来我正在创建一个课程

class Derived : public Base, public Interface;
Run Code Online (Sandbox Code Playgroud)

如果我有 Base *object = new Derived;

我怎么能投objectInterface?(当然,如果我知道对象实际上是派生类)

编辑:

我尝试过dynamic_cast和static_cast(未编译).那么让我解释一下这个问题:

我有:

class Object {...}

class ITouchResponder
{
public:
    virtual bool onTouchBegan(XTouch *touch) = 0;
    virtual void onTouchMoved(XTouch *touch) = 0;
    virtual void onTouchEnded(XTouch *touch) = 0;
};

class Ball : public Object, public ITouchResponder {...};

class TentacleSensor : public Object, public ITouchResponder {...}
Run Code Online (Sandbox Code Playgroud)

对象有一个bool touchable_属性.如果它是真的那么对象正在实现ITouchResponder接口.

当我使用它时:

bool Level::onTouchBegan(XTouch *touch)
{
    ... …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance casting multiple-inheritance

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

从基类到不同派生类的多重继承转换

我们假设有这样的类层次结构:

class A //base class

class B //interface

class C : public A, public B
Run Code Online (Sandbox Code Playgroud)

然后创建C对象:

A *object = new C();
Run Code Online (Sandbox Code Playgroud)

可以将对象转换为B吗?

重要提示:我假设我不知道该对象是C.我只知道它实现了接口B.

c++ casting multiple-inheritance

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

从函数创建并返回一个大对象

想象一下这种情况,我有这样的功能:

Object f()
{
    Object obj;
    return obj;
}
Run Code Online (Sandbox Code Playgroud)

sizeof(Object)价值在哪里.

然后我调用了这个函数:

Object object = f();  
Run Code Online (Sandbox Code Playgroud)

我是否正确理解第一个Object将在堆栈上创建(在函数中)然后将被复制到对象变量?

如果是这样,是否合理地在堆上的函数中创建一个对象并返回指向它而不是副本的指针?

但我的意思是必须在f()函数中创建对象- 不是通过指针或对此函数的引用传递并初始化.

编辑

我并不是说f是一个非常简单的功能.根据某些上下文,它可能有一个非常复杂的对象初始化例程.编译器是否仍会优化它?

c c++ memory

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

如何将std :: string转换为QString

我有个问题:

std::string str("character/test/raw");
qDebug() << QString::fromStdString(str);
Run Code Online (Sandbox Code Playgroud)

输出是:

"]AIIIIIIIIIIIIIIIIIIIIIIIIIIIII"
Run Code Online (Sandbox Code Playgroud)

我认为问题在于编码,但不知道如何解决它.请帮忙

c++ string qt

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

iOS SDK标准集合

我是Objective-c的新手.我找不到像NSStack,NSList等等.但我需要容器来编写应用程序.我发现的唯一容器是NSArray和NSMutableArray.我知道我可以使用STL容器,但我不确定这是最好的方法.

collections objective-c

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

iOS XML编写器类

我想创建一个使用关卡系统的游戏.所以我想存储我的关卡并且能够在游戏中更改它们(以保存状态).所以我决定使用XML来存储关卡.我发现NSXmlParser类用于从XML读取,但我找不到保存级别状态的编写器.在我的游戏中,关卡状态和关卡非常相似(我有很多可移动的对象),所以我不想存储与它所属的关卡分开的关卡状态数据.问题是我无法找到一种方法来轻松修改iPhone上的XML文件.也许我正在使用糟糕的方法.

xml iphone objective-c

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

如何从blender脚本中显示消息?

有没有办法显示一个简单的消息框,其中包含来自blender脚本的文本?例如,如果我在执行期间遇到错误.

python scripting blender

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

c ++多重继承函数合并

我有:

class XILightSource 
{
public:
    virtual XVec2 position() const = 0;
};

class XLightSprite : public XSprite, public XILightSource
{

};
Run Code Online (Sandbox Code Playgroud)

问题是XSprite已经具有相同的功能position.我怎么能对编译器说,我想用XSprite::position函数作为实现XILightSource::position()

c++ inheritance multiple-inheritance

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

c ++存储指向未知类的成员函数的指针

我想存储一个指向对象的指针和一个指向它的已知签名方法的指针.如果我知道该类,那么这个指针有类型:

int (MyClass::*pt2Member)(float, char, char)
Run Code Online (Sandbox Code Playgroud)

但是,如果我不知道类型,我怎么能存储指针?

我想做这样的事情:

myObject.callThisFuncLater(&otherObject, &otherObject::method)
Run Code Online (Sandbox Code Playgroud)

我怎么能存放指向方法methodmyObject后来又打电话了吗?

c++ pointers member-function-pointers function-pointers callback

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