这里有很多关于静态与全局的问题,但我认为我的问题有点不同.
我想知道是否有一种方法可以跨文件共享放置在命名空间中的变量,就像类中的静态变量一样.
例如,我编码:
//Foo.h
class Foo
{
public:
static int code;
static int times_two(int in_);
};
namespace bar
{
static int kode;
}
Run Code Online (Sandbox Code Playgroud)
-
//Foo.cpp
int Foo::code = 0;
int Foo::times_two(int in_)
{
bar::kode++;
code++;
return 2*in_;
}
Run Code Online (Sandbox Code Playgroud)
-
//main.cpp
int main()
{
cout << "Foo::code = " << Foo::code << endl;
for(int i=2; i < 6; i++)
{
cout << "2 x " << i << " = " << Foo::times_two(i) << endl;
cout << "Foo::code = " << …Run Code Online (Sandbox Code Playgroud) 我有一个external_jpeg_func()在char数组中使用jpeg数据来处理它的东西.我无法修改此功能.为了提供char数组,我做了类似下面的事情:
//what the funcs take as inputs
std::string my_get_jpeg();
void external_jpeg_func(const char* buf, unsigned int size);
int main ()
{
std::string myString = my_get_jpeg();
external_jpeg_func(myString.data(), myString.length() );
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:使用字符串传输char数组是否安全?jpeg(或者任何二进制文件格式)是否有可能遇到像'\ 0'这样的字符并导致数据丢失?
假设我有一个名为Gamers的桌子.
玩家包含列GamerID,GameID,Score.
我有兴趣选择每场比赛得分最高的球员.
例如,
|Gamers
|-------------------------
|GamerID | GameID | Score
|1 | 1 | 10
|2 | 1 | 10
|3 | 1 | 10
|4 | 1 | 90
|5 | 2 | 40
|6 | 2 | 10
|7 | 3 | 10
|8 | 3 | 30
Run Code Online (Sandbox Code Playgroud)
在查询之后,我希望得到GamerID 4,5和8的行.这样做的查询是什么?
我遇到了一个必须换掉某个对象的值的情况.由于我自己的草率复制和粘贴,我不小心复制了类型声明.这是一个简化的例子:
int main()
{
int i = 42;
cout << "i = " << i++ << endl;
// ... much later
if( isSwapRequired == true )
{
int i = 24;
cout << "i = " << i++ << endl;
}
cout << "i = " << i++ << endl;
}
Run Code Online (Sandbox Code Playgroud)
让我感到沮丧的是,编译器没有抓住这一点,并进一步让它i = 24活在自己的小范围内.然后,事实证明,在范围之外,i仍然是43.我注意到如果两者i都处于同一级别,那么编译器肯定会抓住这个错误.编译器是否有理由以不同方式处理多个声明?
如果重要,我正在使用VS10.