小编use*_*130的帖子

无需额外空间即可创建DMG

我目前hdiutil用来创建我的DMG.

我使用的命令是hdiutil create -size xxxg myImage.dmg -fs HFS+. 我总是把它的大小都放在一边,直到我足够接近它.

是否有更好的方法可以缩小DMG的尺寸或创建尺寸?

macos dmg

7
推荐指数
2
解决办法
3869
查看次数

如何编写其指针和数据为const的unique_ptr

我第一次尝试编写一个基于for循环的范围来迭代unique_ptrs我写道:

std::vector<std::unique_ptr<Foo>> vec;
// Initialize vec

for (auto v : vec) // error
{}
Run Code Online (Sandbox Code Playgroud)

然后我意识到这是尝试使用unique_ptr创建每个元素的副本.那么我把它写成参考:

for (auto& v : vec)
{}
Run Code Online (Sandbox Code Playgroud)

在它前面添加一个const使我无法更改指针.

for (const auto& v : vec)
{
   v = nullptr; // error (good!)
}
Run Code Online (Sandbox Code Playgroud)

如何编写它,以便指向的数据无法更改?例如,以下代码不应编译.

for (??? v : vec)
{
   v->func();
}

class Foo
{
public:
   void func();

private:
   bool mBar;
}

Foo::func()
{
   mbar = true; // Should cause error
}
Run Code Online (Sandbox Code Playgroud)

c++ unique-ptr

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

自动化OSX Mac App Store构建

我正在寻找一种方法来为我的OSX Mac App Store构建自动化"构建和存档"和"管理器 - >共享......".我已经阅读了" Xcode"Build and Archive"from command line ",这是针对iPhone开发的,我希望可以为我的构建做类似的事情.

macos build-automation

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

捕获lambda表达式中的指针?

我有一个使用lambda表达式的函数.

std::vector<Bar*> mBars;

void foo(Bar* bar)
{
    auto duplicateBars = std::remove_if(mBars.begin(), mBars.end(),
        [bar] (const Bar* const &element)
        {
            return bar == element;
        });

    mBars.erase(duplicateBars, mBars.end());
}
Run Code Online (Sandbox Code Playgroud)

后来,我查看了代码并意识到我可以为foo的签名添加两个consts.

void foo(const Bar* const bar);
Run Code Online (Sandbox Code Playgroud)

bar现在指针和数据是常量,但是为了lambda表达式的目的,指针本身是常量,因为我按值捕获.但是,指向的数据可以更改,并且无法更改此数据,因为constlambda捕获中不允许这样做.

这对我来说不直观.我的解释是否正确?我可以使用第二个签名,但我无法保护数据不被lambda表达式更改.

c++ lambda c++11

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

简单的论证转发(我的签名应该是什么?)

举个例子,假设我正在为vector的push_back方法编写一个瘦包装器.

class Foo
{
public:
   void myPushBack(Bar b);   // Line in question
private:
   std::vector<Bar> vec;
}

void Foo::MyPushBack(bar b)
{
   vec.push_back(bar);
}

main()
{
   Foo f();
   f.myPushBack();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是该函数的正确签名是什么myPushBack?然后我的下一个问题是,myPushBack如果vec类型是什么,该函数的正确签名是什么std::vector<weak_ptr<Bar>>

c++ arguments weak-ptr

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

标签 统计

c++ ×3

macos ×2

arguments ×1

build-automation ×1

c++11 ×1

dmg ×1

lambda ×1

unique-ptr ×1

weak-ptr ×1