小编Adr*_*ian的帖子

方法采用两个默认参数

我有一个方法,具有以下定义:

void foo(int i = 0, bool flag = false) {}
Run Code Online (Sandbox Code Playgroud)

我想通过仅传递第二个参数来调用foo():

foo(true);
Run Code Online (Sandbox Code Playgroud)

但是像这样它总是将它传递给第一个参数(i).
有没有其他解决方案我可以将我的论点传递给第二个参数?或者唯一的方法是通过第一个.

foo(0, true);
Run Code Online (Sandbox Code Playgroud)

c++

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

在C中与工会混淆

关于这段代码的简单问题:

union MyUnion
{
    int a;
    int b;
};

union MyUnion x, y;
x.a = 5;
y.b = 2;
y.a = 3;
x.b = 1;

int c = (x.a - y.b) + (y.a - x.b);
Run Code Online (Sandbox Code Playgroud)

谁能解释为什么c这里的值为0?

c

2
推荐指数
3
解决办法
182
查看次数

用于以下场景的模式是什么?

我有以下课程:

class Base {
public:
    Base(string name) {
        agg = new Aggregate(name);
    }
private:
    Aggregate* agg;
};
Run Code Online (Sandbox Code Playgroud)

现在我需要扩展这个类:

class Derived : Base {
public:
    Derived(string name) : Base(name) {
        agg2 = new Aggregate2(name);
    }
private:
    Aggregate2* agg2;
};
Run Code Online (Sandbox Code Playgroud)

我想要的是当我创建一个Base对象时,Aggregate需要创建它,当我创建一个Derived对象时,Aggregate2应该只创建它.

现在这不会发生,因为Aggregate它是在构造函数内部创建的,当我创建一个Derived对象Aggregate并且Aggregate2会创建它时会调用它.

我可以将创建移动到另一个方法,并在创建对象后调用它.
有没有其他优雅的方式来做我想要的?

c++ design-patterns

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

如何重载模板函数以匹配特定容器?

我有以下函数来检索n容器的元素 - O(n):

template<typename Container>
const typename Container::value_type& getNthElement(const Container& container, size_t n) {
    auto itr = cbegin(container);
    for (auto i = 0u; i < n; ++i) {
        ++itr;
    }
    return *itr;
}
Run Code Online (Sandbox Code Playgroud)

因为vectors我有这个超载 - O(1):

template<typename T>
T getNthElement(const vector<T>& container, size_t n) {
    return container[n];
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我想使用deque(也有O(1)实现),将使用O(n)实现调用第一个模板函数.

第二个过载功能如何适应vectorsdeques
我的问题来自这篇文章.

c++ templates

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

如何使用自动布局调整固定宽度和高度UIImageView的大小

我有一个名为的视图myView,它始终位于屏幕的一半,位于屏幕顶部.

在这个视图中,我添加了一个UIImageView120x120尺寸,位于myView(水平和垂直)的中心.在IB内部,为了满足约束(X和Y),我总是需要为我的图像设置固定的宽度和高度,在我设置水平中心和垂直居中之后.

但是,在固定高度和宽度的情况下,更改屏幕尺寸时图像不会调整大小.我希望我的图像在iPhone5或iPhone 4s上运行myView时调整大小,因为它会调整大小.我需要像图像应该取决于myView大小的东西.

如何实际实现这一目标?

ios autolayout swift

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

从电话簿中检索我自己的联系方式是否可行?

我正在使用该CNContact框架来获取手机中的所有联系人,我需要将一些数据与我自己的联系方式进行比较.

获取我自己的联系方式是否可行?我可以在使用Apple框架检索联系人时找到自己列出,但我不知道如何识别我.

有任何想法吗 ?

ios swift cncontact

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

使用UIButton在三个状态之间切换

我有一个UIButton对我要切换标题和颜色当我按下它.按钮应该有三种状态:每日,每月和每年.

现在我有这个看起来不那么优雅的解决方案:

if sender.currentTitle == "Daily" {
    sender.setTitle("Monthly", for: .normal)
    sender.setTitleColor(UIColor(hex: "FB967F"), for: .normal)
} else if sender.currentTitle == "Monthly" {
    sender.setTitle("Yearly", for: .normal)
    sender.setTitleColor(UIColor(hex: "A395CE"), for: .normal)
} else if sender.currentTitle == "Yearly" {
    sender.setTitle("Daily", for: .normal)
    sender.setTitleColor(UIColor(hex: "75CFF8"), for: .normal)
}
Run Code Online (Sandbox Code Playgroud)

在Swift中有更方便的方法吗?

ios swift

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

如何从容器视图中删除 UIViewController?

这就是我所做的。添加部分正在工作,但删除部分不起作用:

extension UIViewController {
    func add(_ child: UIViewController, containerView: UIView) {
        addChildViewController(child)
        containerView.addSubview(child.view)
        child.didMove(toParentViewController: self)
    }

    func remove(containerView: UIView) {
        guard parent != nil else { return }

        willMove(toParentViewController: nil)
        removeFromParentViewController()
        containerView.removeFromSuperview()
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试更新此代码,该代码最初会添加和删除子视图控制器。但我想要的是在容器视图中添加和删除。

有人可以指出删除部分有什么问题吗?

ios swift

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

C++ recv()问题

我想发一个字符串"Hello there",但我只能得到"re".这是为什么?

void Accept()
{
    SOCKADDR_IN sock;
    int intsock = sizeof(sock);
    remoteSocket = ::accept(desc, (LPSOCKADDR)&sock,  &intsock);
    if(remoteSocket == -1)
    {
        cout << "Error in Accept()" << endl;
    }
    HandleConnection();
}

void HandleConnection()
{
    cout << "You are connected !!!" << endl;
    char* temp = new char[20];
    Recv(temp);
    cout << temp << endl;
}

void Send(const char* buffer)
{
    if((::send(remoteSocket, buffer, strlen(buffer), 0)) < 0)
    {
        cout << "Error in Send()" << endl;
    }
}

void Recv(char* buffer)
{
    int n …
Run Code Online (Sandbox Code Playgroud)

c++ sockets

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

Windows和Linux之间的可移植代码

我有一个为linux编写的应用程序,我想让它在Windows下执行.那么,如果程序在windows下运行,我怎样才能在代码中创建一个特定的行?我知道#ifdef的某些内容......谢谢

c++

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

标签 统计

c++ ×5

ios ×4

swift ×4

autolayout ×1

c ×1

cncontact ×1

design-patterns ×1

sockets ×1

templates ×1