小编Zac*_*Lee的帖子

静态 std::unordered_map 的默认值

我想知道 static 结构中变量的默认值static std::unordered_map<std::string, struct>

这是我的示例代码:

#include <iostream>
#include <string>
#include <unordered_map>

int main()
{
    enum MyStateType
    {
        MY_STATE_NEW,
        MY_STATE_RUN,
        MY_STATE_FREE
    };
    struct Foo
    {
        int num;
        MyStateType state;
    };
    static std::unordered_map<std::string, Foo> map;

    std::cout << map["Apple"].num << '\n';
    std::cout << map["Apple"].state << '\n';
}
Run Code Online (Sandbox Code Playgroud)

输出结果:

0
0
Program ended with exit code: 0
Run Code Online (Sandbox Code Playgroud)

认为内部Foo的变量总是0在开始时被初始化是否安全?

c++ static dictionary initialization

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

在windowResized()中调用SetWindowShape()冻结了Ubuntu上的应用程序

我试图使窗口得到调整大小按比例之间保持相同的比例widthheight窗口.

例如,如果您创建了一个具有400x300尺寸的窗口,并且如果您将宽度拉伸到800,则600即使您只是水平拉伸窗口,高度也会自动拉伸到.

无论如何,为了实现这个功能,我需要使用ofSetWindowShape()内部windowResized()监听器.

我可以在MacOS X上快速对其进行原型设计并且效果非常好.

这是代码:

ofApp.h

enum ScaleDir { //window scaling directions

    SCALE_DIR_HORIZONTAL,
    SCALE_DIR_VERTICAL,
};
ScaleDir scaleDir;

int windowWidth, windowHeight; //original window dimensions
float widthScaled, heightScaled; //scaled window dimensions
float windowScale; //scale amount (1.0 = original)
bool bScaleDirFixed; //is direction fixed?
Run Code Online (Sandbox Code Playgroud)

ofApp.cpp

//--------------------------------------------------------------
void ofApp::setup(){

    windowWidth = ofGetWidth();
    windowHeight = ofGetHeight();
    windowScale = 1.0f;
    widthScaled = windowWidth * windowScale;
    heightScaled = windowHeight * windowScale;
} …
Run Code Online (Sandbox Code Playgroud)

c++ openframeworks

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

编写构造函数/析构函数是一种好习惯吗?

我想知道即使我不使用它们也总是编写构造函数/析构函数是一个好习惯.

class Foo
{
public:
    Foo(){};
    ~Foo(){};
};
Run Code Online (Sandbox Code Playgroud)

或者只有在我实际使用它们时才更好地编写它们?

class Foo
{
public:
};
Run Code Online (Sandbox Code Playgroud)

c++ constructor destructor class

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

初始化列表 vs 构造函数赋值 vs 变量定义

我试图了解以下类之间的真正区别。

class A
{
public:
    A()
    :width(500)
    ,height(300){};
    int width;
    int height;
};

class B
{
public:
    B()
    {
        width = 500;
        height = 300;
    };
    int width;
    int height;
};

class C
{
public:
    int width = 500;
    int height = 300;
};
Run Code Online (Sandbox Code Playgroud)

您认为在类中初始化widthheight变量的最佳方法是哪一种?

我应该坚持一种方式而不是其他方式吗?

c++ constructor initialization class initializer-list

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

如何将char*浅拷贝到std :: string?

我想知道是否有可能浅拷贝char*std::string.

c++ string

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

C++中正确的typedef位置

我想问一下C++中typedef的正确位置.

Version1:类外的typedef

typedef std::pair<std::string, int> StrIntPair;
typedef std::vector<StrIntPair> StrIntPairVec;

class MyData
{
public:
    MyData(){};
    ~MyData(){};
private:
    void addInfo(const StrIntPair &info)
    {
        infoVec.push_back(info);
    }
    StrIntPair info;
    StrIntPairVec infoVec;
};
Run Code Online (Sandbox Code Playgroud)

Version2:类public中的typedef

class MyData
{
public:
    MyData(){};
    ~MyData(){};
    typedef std::pair<std::string, int> StrIntPair;
    typedef std::vector<StrIntPair> StrIntPairVec;
private:
    void addInfo(const StrIntPair &info)
    {
        infoVec.push_back(info);
    }
    StrIntPair info;
    StrIntPairVec infoVec;
};
Run Code Online (Sandbox Code Playgroud)

版本3:类私有中的typedef

class MyData
{
public:
    MyData(){};
    ~MyData(){};
private:
    typedef std::pair<std::string, int> StrIntPair;
    typedef std::vector<StrIntPair> StrIntPairVec;
    void addInfo(const StrIntPair &info)
    {
        infoVec.push_back(info);
    }
    StrIntPair info;
    StrIntPairVec …
Run Code Online (Sandbox Code Playgroud)

c++ typedef

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

如何合并具有相同条件的两个函数?

我很快为这个问题编写了下面的课程.

我正在寻找一种方式来合并addFruit()removeFruit()减少的代码.

它们都使用相同的条件,但最后只是使用不同的函数调用.

我的代码:

#include <iostream>
#include <string>
#include <vector>

class MyClass
{
public:
    void addFruit(const std::string &str, int count)
    {
        if (str == "apples")
            addToVec(apples, count);
        else if (str == "oranges")
            addToVec(oranges, count);
        else if (str == "lemons")
            addToVec(lemons, count);
        else if (str == "melons")
            addToVec(melons, count);
        else if (str == "bananas")
            addToVec(bananas, count);
        else
            std::cout << "Unknown Fruit : " << str << '\n';
    }
    void removeFruit(const std::string &str)
    {
        if (str == "apples") …
Run Code Online (Sandbox Code Playgroud)

c++ design-patterns

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

如何使用 SWIG 包装带有可变参数的 C 函数

我正在尝试使用 SWIG 包装带有变量参数的 C 函数,如下所示。

void post(const char *fmt, ...)
{
    char buf[MAXPDSTRING];
    va_list ap;
    t_int arg[8];
    int i;
    va_start(ap, fmt);
    vsnprintf(buf, MAXPDSTRING-1, fmt, ap);
    va_end(ap);
    strcat(buf, "\n");

    dopost(buf);
}
Run Code Online (Sandbox Code Playgroud)

但是当我在 Lua 中运行该函数时,它仅在我使用 1 个参数时才有效。我无法用下面的风格来写。

pd.post("NUM : %d", 123);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误。

Error in post expected 1..1 args, got 2
Run Code Online (Sandbox Code Playgroud)

是否可以使用 SWIG 用变量参数包装 C 函数?

我将不胜感激任何帮助。谢谢!

c lua swig arguments

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

如何在Lua脚本之间共享全局变量

我想知道如何在Lua脚本之间共享全局变量。

我尝试自己使用它来执行此操作require,但它没有按我的预期工作。

这是我的简单示例代码。

test.lua

num = 2
Run Code Online (Sandbox Code Playgroud)

A.lua

require(`test`);
num = 5
Run Code Online (Sandbox Code Playgroud)

B.lua

require(`test`);
print(num);
Run Code Online (Sandbox Code Playgroud)

如果我A.lua先运行,然后B.lua,我会得到以下结果:

2
Run Code Online (Sandbox Code Playgroud)

但我期望得到,5因为我将变量值修改为2in A.lua

有可能实现我想要的吗?(我希望有一个例子)

lua

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

'nil' 作为 Lua 表中的元素?

我想知道nilLua 中表中的 是否是有效元素。

我不明白的是

下面的代码打印3

t = {1, 2, 3, nil};
print(#t);
Run Code Online (Sandbox Code Playgroud)

但下面的打印4

t = {1, nil, 3, 4};
print(#t);
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这两个代码输出不同的结果。

lua lua-table

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