小编Que*_*tin的帖子

Linux 上的最大子进程数

下面的代码将产生尽可能多的孩子。自己不会再分叉,一旦父进程退出就会变成僵尸。
父进程会产生多少个子进程?

int main(int argc, char *arg[])
{
     while(fork() > 0);
}
Run Code Online (Sandbox Code Playgroud)

c linux fork

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

API返回类型 - 强制智能指针到用户?

假设我有一个创建并返回对象的API边框函数:

<?> createOneObject();
Run Code Online (Sandbox Code Playgroud)

将对象返回给调用者的最佳方法是什么?

  • 返回raw MyObject*并让调用者自己处理指针
  • 返回 std::shared_ptr<MyObject>
  • 别的什么?

c++ pointers

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

检测c ++数组中的数据类型

这是打印出buf数组的c ++代码,填充0,1,2,... 254

#include <iterator>
#include <iostream>
#include <numeric>

int main()
{
        int buf[255];

        auto it_b = std::begin(buf);
        auto it_e = std::end(buf);

        std::iota(it_b, it_e, 0);
        std::copy(it_b, it_e, std::ostream_iterator<decltype(*it_b)>(std::cout, " "));

        std::cout << std::endl;

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我试图使它成为通用的,所以只有一个地方的类型是明确的给定 int

因为我需要明确声明类型,ostream_iterator我想知道实现这一目标的最佳方法是什么.

  1. decltype(*it_b)
  2. decltype(buf[0])
  3. 别的东西......

使用这种或那种方法的优点/缺点是什么?

在这个时候假设我们坚持使用C风格的数组.

c++ arrays c++11 c++14

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

C++不能将变量声明为抽象类型

我正在使用C++模板,我得到了上面的错误.

我的代码如下:

#include <iostream>
#include <string>
using namespace std;
enum type{ONE,TWO,THREE,FOUR,FIVE};

class base{
public:
    virtual void baseOut()const =0;
};
template<class T>
class derived:public base{
    virtual void drivedOut()const=0;
};

template<class T,type>
class derived2:public derived<T>{
    public:
    void baseOut(){}
    void drivedOut(){}

};

int main(){
    derived2<string,ONE> d;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,由于我已经在类模板drived2中覆盖了纯虚函数,为什么drived2仍然是一个抽象类?如何删除此错误.

谢谢:)

c++

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

C++中的复合类型,const和auto

我试图理解这段代码.我一直在想弄清楚为什么d以及eint*const int*.我可以使用一些帮助.

const int ci = i, &cr = ci;
auto b = ci; // b is an int (top-level const in ci is dropped)
auto c = cr; // c is an int (cr is an alias for ci whose const is top-level)
auto d = &i; // d is an int*(& of an int object is int*)
auto e = &ci; // e is const int*(& of a const object …
Run Code Online (Sandbox Code Playgroud)

c++ const auto c++11

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

在多级继承中重写,中间派生类没有重写函数

在多级继承中,我可以在继承层次结构中重写基类中的虚函数吗?举个例子

class Base {
public : 
virtual void method1();

///
}

class Derived1 : Base {
public : 
void method2();
}

class Derived2 : Derived1 {
public :
void method1();
}
Run Code Online (Sandbox Code Playgroud)

我可以使用多态性访问 Derived2::method1() 吗?

Base* myClass = new Derived2();

myClass->method1();
Run Code Online (Sandbox Code Playgroud)

c++ c++03

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

本书的示例在类声明中使用“ explicit”关键字。无效吗?

我正在看一本根据标准C ++ 11讲授C ++的书。本书显示了一个将子类标记为的示例explicit

根据我的收集,这将使编译器检查与动态绑定有关的错误,并且override每当您覆盖虚拟函数时,还必须显式使用关键字,否则它将无法正常工作。我确实设置了一个小程序来对此进行测试,但出现错误。而且我从未见过explicit在其他任何地方都可以像这样使用关键字的示例。

这本书提供的信息不正确还是我只是错过了什么?我应该单独使用override关键字吗?

class base {
public:
    virtual void f() {
        cout << "Called from base" << endl;
    }
};

class derived explicit : public base {
public:
    void f() override {
        cout << "Called from derived" << endl;
    }
};
Run Code Online (Sandbox Code Playgroud)

c++ -std=c++11 main.cpp -o main.exe在终端上写给我以下错误:

error: expected unqualified-id 
class derived explicit : public base {
                   ^
Run Code Online (Sandbox Code Playgroud)

c++ class c++11

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

将整数序列与元组和可变参数模板一起使用

假设我有一个元组:

std::tuple<int, char, unsigned int> t{1, 'a', 4}
Run Code Online (Sandbox Code Playgroud)

如何使用std::index_sequence和朋友迭代上述元组的类型,以便可以使用(或在需要时重写)以下函数to_token

template<typename P1, typename... Param>
std::vector<std::string> to_token(const P1& p1, const Param&... param) {
    const auto to_token_impl = [](const auto& t) {
        using ParamType = std::decay_t<decltype(t)>;
        std::stringstream ss;

        if constexpr (std::is_same_v<ParamType, char>)
            ss << "char";
        else if constexpr (std::is_integral_v<ParamType>) {
            ss << "integral";
        }
        return ss.str();
    };
    return {to_token_impl(p1), to_token_impl(param)...};
}
Run Code Online (Sandbox Code Playgroud)

预期产量: { "integral", "char", "integral" }

根据此处找到的示例,我已经开始研究这种间接方式,但是我无法确定下一步该怎么做...

template<typename... Args>
void tokenize(const std::tuple<Args...>& t) {
    tokenize_impl(t, std::index_sequence_for<Args...>{}); …
Run Code Online (Sandbox Code Playgroud)

c++ tuples template-meta-programming variadic-templates c++17

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

将流程图转换为c ++代码

我将此流程图转换为C++代码时遇到问题.

流程图

应该看起来有点像这样(我现在知道这是错的):

do {
  I1;
  if(!W1) {
      I2;
  ...
  }
}
Run Code Online (Sandbox Code Playgroud)

I1,I2,I3是指令.我想我应该使用布尔变量来正确地做,但是如何?

c++ control-structure flowchart

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

使用SFML为Catan创建板

我想用SFML为Catan游戏创建棋盘,我需要的只是19个形状(六边形),我可以占据所有6个角和6个角,来建造城市或道路.对于形状我做这个:

std::vector<sf::CircleShape> shape(19);
int n = 0;
int shape_y = 100;
for (size_t index = 0; index < shape.size(); index++) {
    if (index < 3) {
        sf::CircleShape sh(80, 6);
        sh.setPosition(200 + n, shape_y);
        sh.setFillColor(sf::Color::Magenta);
        shape[index] = sh;
        n += 140;
    }
    if (index == 3)
        n = 0;
    if (index < 7 && index >= 3) {
        sf::CircleShape sh(80, 6);
        sh.setPosition(130 + n, shape_y + 120);
        sh.setFillColor(sf::Color::Blue);
        shape[index] = sh;
        n += 140;
    }
    if (index == 7)
        n = …
Run Code Online (Sandbox Code Playgroud)

c++ sfml

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