我想知道 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在开始时被初始化是否安全?
我试图使窗口得到调整大小按比例之间保持相同的比例width和height窗口.
例如,如果您创建了一个具有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) 我想知道即使我不使用它们也总是编写构造函数/析构函数是一个好习惯.
class Foo
{
public:
Foo(){};
~Foo(){};
};
Run Code Online (Sandbox Code Playgroud)
或者只有在我实际使用它们时才更好地编写它们?
class Foo
{
public:
};
Run Code Online (Sandbox Code Playgroud) 我试图了解以下类之间的真正区别。
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)
您认为在类中初始化width和height变量的最佳方法是哪一种?
我应该坚持一种方式而不是其他方式吗?
我想问一下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) 我很快为这个问题编写了下面的课程.
我正在寻找一种方式来合并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) 我正在尝试使用 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 函数?
我将不胜感激任何帮助。谢谢!
我想知道如何在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。
有可能实现我想要的吗?(我希望有一个例子)
我想知道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)
我不明白为什么这两个代码输出不同的结果。
c++ ×7
lua ×3
class ×2
constructor ×2
arguments ×1
c ×1
destructor ×1
dictionary ×1
lua-table ×1
static ×1
string ×1
swig ×1
typedef ×1