小编And*_*uel的帖子

没有私人会员的集体声明

所以,我愿意像这样构建我的项目:

ClassA.cpp:

class ClassA {
public:
    static ClassA* create() {
        return new ClassA();
    }
    void methodA() {
        // stuff here
    }
    void methodB() {
        // more stuff here
    }
private:
    ClassA() {
    }
    void privateMethodOne() {
        //yadda yadda
    }
    int attributeA;
    char attributeB;
};
Run Code Online (Sandbox Code Playgroud)

ClassA.hpp:

class ClassA {
public:
    ClassA* create();
    void methodA();
    void methodB();
private:
    ClassA();
};
Run Code Online (Sandbox Code Playgroud)

我将只使用指针工作,我想知道这种方法是否会在将来产生错误.我想知道这里是否存在陷阱.假设.hpp是自动生成的,因此除了私有成员之外,它们具有完全相同的成员.

c++

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

从catch块中重新抛出异常有嵌套异常吗?

这个想法是"尝试you(),如果尝试失败_do(),如果失败则报告第一次尝试的异常,即you()".

void that_thing() {
    try {
        you();
    } catch( ... ) {
        bool error=false;
        try {
            _do();
        } catch( ... ) {
            error = true;
        }
        if( error ) throw;
    }
}
Run Code Online (Sandbox Code Playgroud)

用Gcc测试它工作得很好,我想知道它是否适用于任何编译器.为了更清楚,我期待的奇怪行为是throw;重新抛出内部异常.

编辑:这个问题不是关于最内在的问题catch,而是关于在捕获最内层之后重新抛出外部异常.问题是,如果这种重新抛出在法律上肯定没有在被指向相似的问题上接近.

c++ exception-handling

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

为什么设置<string> :: iterator不能用作map的键?

我有一段这样的代码:

set<string>::iterator it1;
set<string>::iterator it2;
pair<set<string>::iterator,bool> ret;

set<string> s;
ret = s.insert("bbbb1");
it1 = ret.first;

ret = s.insert("bbbb2");
it2 = ret.first;

map<set<string>::iterator, set<string>::iterator> m;

m.insert(make_pair(it1,it2));
Run Code Online (Sandbox Code Playgroud)

但最后一行"m.insert(make_pair(it1,it2));" 失败..

c++ iterator stl key map

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

在Clang上禁用"移动构造函数可用时删除复制构造函数"

在StackOverflow上查看我在使用C++ 11标准时发现在Clang ++上,如果已经为您的类定义了一个移动构造函数,则隐式构造函数生成被禁用,即复制构造函数被"删除已删除".

有没有办法禁用这种行为?

此外,这种行为是否标准化?因为我在GCC中没有相同的行为.

c++ clang c++11 clang++

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

jpeg或png哪个较慢?

是否想知道,这两种类型的图像(JPEG或PNG)的解压缩过程是否存在显着差异?

c c++ libjpeg libpng

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

`execl`是否需要NULL作为最后一个参数?

我的linux(Ubuntu)的手册页,没有提到需要NULL作为最后一个参数,minix版本的手册页execl提到需要NULL作为最后一个参数.然而,我在调用时遇到了奇怪的行为modprobe,我解决了将NULL作为最后一个参数的问题.

对我有用的方式:

execl("/sbin/modprobe","modprobe","pl2303",NULL);
Run Code Online (Sandbox Code Playgroud)

如果我这样做:

execl("/sbin/modprobe","modprobe","pl2303")
Run Code Online (Sandbox Code Playgroud)

我收到错误号14(EFAULT).`

c linux

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

对于操作count().哪个更快std :: set <void*>或std :: unordered_set <void*>?

假设那个sizeof(void*) == sizeof(size_t)哈希指针只是将其转换为size_t.所以我想知道我的集合是否包含一个元素,它会更快std::set<void*>还是std::unordered_set<void*>

我知道怎么std::set运作,但我不熟悉std::unordered_set.好吧,我知道无序集使用散列和桶,如果没有交叉(这是我的情况),复杂性是O(1).但我不知道这种复杂程度有多大.

如果容器中的日期相关,我的实际情况使用不到一百¹.但是我的好奇心只涉及几个元素和很多元素的情况.

¹元素的数量很少,甚至std::vector可以表现良好.

c++ performance c++11

-2
推荐指数
1
解决办法
831
查看次数

标签 统计

c++ ×6

c ×2

c++11 ×2

clang ×1

clang++ ×1

exception-handling ×1

iterator ×1

key ×1

libjpeg ×1

libpng ×1

linux ×1

map ×1

performance ×1

stl ×1