小编Jee*_*eet的帖子

什么是在C++中返回错误代码的正确方法

我正在使用错误代码来处理我的c ++项目中的错误.问题是如何从一个应该返回一些变量/对象的函数返回错误代码.

考虑一下:

long val = myobject.doSomething();
Run Code Online (Sandbox Code Playgroud)

在这里,myobject是某个类的对象.如果doSomething函数遇到某些错误条件,那么它应该如何通知调用者(不使用异常).

可能的解决方案:

  1. 在类中有一个数据成员(比如err_),可以由调用者检查.但是,在共享同一个对象并调用相同函数的多线程应用程序中,这将是不安全的.
  2. 使用一些全局错误变量,在多线程环境中也是同样的问题.

现在如何通知调用者一些错误情况?

c++

22
推荐指数
5
解决办法
3万
查看次数

什么是C++中错误处理的正确方法

一种是使用C++异常:尝试catch块.但是,当引发异常时,释放动态内存将成为一个问题.

第二种是使用C风格:errno变量

第三个是在错误时返回-1,在成功时返回0 :)

应该选择哪种方式进行中型项目?为什么?还有其他更好的方法..?

c++ error-handling

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

我可以在Ruby的if/else中使用大括号吗?

为什么我不能在if/ elseconstructs中使用花括号?我离开了Python,因为我觉得不能轻易地缩进语句.

这在Ruby中也是这样吗?

例如,我可以写这样的东西吗?

if token == "hello" {
  puts "hello encountered"
  # lots of lines here
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用大括号来做到这一点?我也读过有关块但不确定如何在if/ else表达式中使用它们.

ruby

6
推荐指数
3
解决办法
5127
查看次数

STL矢量性能

每次调用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有什么影响吗?

c++ vector

4
推荐指数
2
解决办法
2329
查看次数

Tizen app不在设备上安装

我正在尝试在MacOS,Win7上使用Tizen Studio 1.0.1在Samsung Tizen Z2设备上安装一个简单的应用程序(由样本构建),并且收到错误23:签名验证失败.

我的设备在Connection Explorer中正确显示.还使用证书管理器生成证书.请帮忙.

tizen tizen-certificate tizen-native-app tizen-studio

4
推荐指数
1
解决办法
6148
查看次数

重载+添加两个指针

我有一个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)

我需要这种额外的工作.请建议.

c++ overloading operator-keyword

0
推荐指数
1
解决办法
1136
查看次数