我正在使用错误代码来处理我的c ++项目中的错误.问题是如何从一个应该返回一些变量/对象的函数返回错误代码.
考虑一下:
long val = myobject.doSomething();
Run Code Online (Sandbox Code Playgroud)
在这里,myobject是某个类的对象.如果doSomething函数遇到某些错误条件,那么它应该如何通知调用者(不使用异常).
可能的解决方案:
现在如何通知调用者一些错误情况?
一种是使用C++异常:尝试catch块.但是,当引发异常时,释放动态内存将成为一个问题.
第二种是使用C风格:errno变量
第三个是在错误时返回-1,在成功时返回0 :)
应该选择哪种方式进行中型项目?为什么?还有其他更好的方法..?
为什么我不能在if/ elseconstructs中使用花括号?我离开了Python,因为我觉得不能轻易地缩进语句.
这在Ruby中也是这样吗?
例如,我可以写这样的东西吗?
if token == "hello" {
puts "hello encountered"
# lots of lines here
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用大括号来做到这一点?我也读过有关块但不确定如何在if/ else表达式中使用它们.
每次调用push_back时,STL向量类都使用复制构造函数存储对象的副本.它不会减慢程序的速度吗?我可以有一个自定义链表的类来处理指向对象的指针.虽然它不会有STL的一些好处,但仍然应该更快.
请参阅以下代码:
#include <vector>
#include <iostream>
#include <cstring>
using namespace std;
class myclass
{
public:
char* text;
myclass(const char* val)
{
text = new char[10];
strcpy(text, val);
}
myclass(const myclass& v)
{
cout << "copy\n";
//copy data
}
};
int main()
{
vector<myclass> list;
myclass m1("first");
myclass m2("second");
cout << "adding first...";
list.push_back(m1);
cout << "adding second...";
list.push_back(m2);
cout << "returning...";
myclass& ret1 = list.at(0);
cout << ret1.text << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它的输出如下:
adding first...copy
adding second...copy
copy
Run Code Online (Sandbox Code Playgroud)
输出显示复制构造函数在添加时和在检索值时都被调用.当我们有更大的对象时,它对性能esp有什么影响吗?
我正在尝试在MacOS,Win7上使用Tizen Studio 1.0.1在Samsung Tizen Z2设备上安装一个简单的应用程序(由样本构建),并且收到错误23:签名验证失败.
我的设备在Connection Explorer中正确显示.还使用证书管理器生成证书.请帮忙.
我有一个String类,我想重载+来添加两个String*指针.这样的事情不起作用:
String* operator+(String* s1, String* s2);
Run Code Online (Sandbox Code Playgroud)
有没有办法避免通过引用传递.考虑这个例子:
String* s1 = new String("Hello");
String* s2 = new String("World");
String* s3 = s1 + s2;
Run Code Online (Sandbox Code Playgroud)
我需要这种额外的工作.请建议.