什么IDE更好地支持g ++中的新C++ 0x功能?
我知道您可以按原样使用编辑器并使用-std = c ++ 0x编译代码,但我希望IDE不会将新功能标记为错误(自动,基于范围的循环,可变参数模板等).
我有一个后台线程,线程调用一些更新UI的方法(为了显示进度条并在文本区域显示其他信息).
如果我修改了一些UI窗口小部件值,则会引发"无法将事件发送到由不同线程拥有的对象"断言错误.
看看论坛,我读到我可以使用QMetaObject :: invokeMethod方法,但是如果我传递Qt :: DirectConnection标志,它实际上会引发上面显示的相同错误,它就可以正常工作.
如果我使用Qt :: QueuedConnection或Qt :: AutoConnection,则invokeMethod返回false.
我的代码看起来类似于:
.H:
class A : public QMainWindow
{
Q_OBJECT
QProgressBar* pb;
public slots:
bool m(bool, int);
};
class B
{
A* a;
public:
void handleEvent();
};
.cpp:
bool A::m(bool x, int y)
{
pb->setValue(y);
return x;
}
void B::handleEvent()
{
//a->m(true, 12); //raises an assertion error
bool r;
//bool ret = QMetaObject::invokeMethod(a, "m", Qt::DirectConnection, Q_RETURN_ARG(bool, r), Q_ARG(bool, true), Q_ARG(int, 12)); //raises the same assertion error error
bool ret …Run Code Online (Sandbox Code Playgroud) 我正在编写一个需要在SQL Server数据库中执行SQL查询的C++应用程序,我想使用SQL Server Native Client来完成它.
MSDN文档没有完整的参考,并有一些示例,所以我正在寻找一些网站,其中包含有关如何使用此API连接,执行查询和检索结果的更多信息.
你们知道我可以在哪里获得更多信息吗?
提前致谢,
埃内斯托
如果我们考虑使用引用计数的std :: string实现,请考虑以下情况:
int main()
{
string english = "Hello";
string german = english; //refcnt = 2
string german2 = german;
/* L1 */ german[1] = 'a';
/* L2 */ *(german2.begin() + 1) = 'A';
cout << english << endl << german << endl << german2 << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
L1和L2会发生什么?引用计数是否已损坏并执行了深层复制?我是这么认为的,但我担心的是,如果发生这种情况,做一个简单的事情:
cout << german[1] << endl;
Run Code Online (Sandbox Code Playgroud)
还是简单的:
cout << *(german.begin()) << endl;
Run Code Online (Sandbox Code Playgroud)
在非const上下文中将执行不必要的深层复制.我对吗?这些实现如何处理这个细节?
你知道是否有一些Borland的Turbo C++克隆文本专用IDE或类似的Unix机箱吗?
我希望通过我的控制台终端以文本模式提供C++ IDE(编辑器/编译器/调试器).
这个问题只是推测性的.
我在C++中有以下实现:
using namespace std;
void testvector(int x)
{
vector<string> v;
char aux[20];
int a = x * 2000;
int z = a + 2000;
string s("X-");
for (int i = a; i < z; i++)
{
sprintf(aux, "%d", i);
v.push_back(s + aux);
}
}
int main()
{
for (int i = 0; i < 10000; i++)
{
if (i % 1000 == 0) cout << i << endl;
testvector(i);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的框中,这个程序大约执行.12秒; 令人惊讶的是,我在Java中使用了类似的实现[使用String和ArrayList],它的运行速度比我的C++应用程序快了很多(大约2秒).
我知道Java HotSpot在转换为native时会执行很多优化,但我认为如果这样的性能可以用Java完成,它也可以用C++实现......
那么,你认为应该在上面的程序中修改,或者我不知道,在使用的库中或在内存分配器中,在这个东西中达到类似的性能?(写这些东西的实际代码可能会很长,因此,讨论它会很棒)...
谢谢.
我只是很好奇,但我想知道是否可以完全删除JVM附带的Java标准类库,并从头开始一个新的[àLlassPath].
如果可能,那么哪些类必须实现最少?(对象和字符串出现在我的脑海中,但是......我不知道).
这样的事情打破了一些许 有没有办法对"java"命令说"不使用rt.jar"?
提前致谢,
埃内斯托
我是一名C++,Java开发人员,我希望以比Objective-C"更好"的方式为Mac编程.
我知道Java Swing可以模仿MacOS X UI,但Java Swing程序不是Cocoa的第一公民.另外我知道我可以使用C++中的Qt或Java中的Jambi来使用执行Cocoa调用的Qt工具包,但是,尽管这不是一个坏主意,但它在所有事情中都添加了一个抽象层.
那么,有没有类似"Vala"的GTK +或一些Java绑定或一些东西来做Cocoa编程而不需要所有Objective-C的东西?
[免责声明:"更好"只是我的欣赏,没有在那里拖钓]
我试图实现这个:
namespace Test
{
void* operator new(size_t s)
{
return malloc(s);
}
}
Run Code Online (Sandbox Code Playgroud)
但是g ++(4.3.1)说:
void* Test::operator new(size_t)’ may not be declared within a namespace
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?
如果是的话,是否还有重载操作符new以在我的类中使用?我不想创建一个基类,并让我的所有类继承自这样的基类.
我有这样的结构:
struct A
{
char x[];
};
Run Code Online (Sandbox Code Playgroud)
这是什么意思?当我做的事情:
A a;
a.x = "hello";
Run Code Online (Sandbox Code Playgroud)
gcc抛出错误说:
error: incompatible types in assignent of 'const char [6]' to 'char [0u]'
Run Code Online (Sandbox Code Playgroud)