相关疑难解决方法(0)

在条件c ++语句中创建对象

我正在学习c ++,而我刚刚学习了面向对象的章节.我有一个关于在if语句中创建对象的问题.

我正在处理的问题是创建一个将显示报告标题的类.该类有一个默认构造函数,它将公司名称和报告名称设置为泛型,并且如果用户需要,还有一个带有两个参数的构造函数(字符串公司名称和报告名称).

问题是,具体而言,"双参数默认构造函数应该允许在创建新的Report对象时指定这些[公司和报告名称].如果用户创建Report对象而不传递任何参数,请使用默认值值.否则,使用用户指定的名称值."

所以我的问题是,如何创建这些对象?我理解如何创建一个没有任何参数的对象(即Report newobj;),以及参数(即Report newobj(string string);).基本上,我首先了解如何在main函数的顶部创建这些对象.但是可以根据用户选择在if语句中创建它们吗?这是我迄今为止所拥有的,显然,它不起作用:

#include <iostream>
#include <string>
#include "report.h"
using namespace std;

bool enter_company_name();           // return true if user wants to enter company name
bool print_form();              // return true if user wants to print in formatted output

int main()
{
  string company_name,
    report_name;
  bool name = false,
    format = false;

  name = enter_company_name();
  format = print_form();

  if (name)
    {
      cout << "Enter company name: ";
      getline(cin, company_name);
      cout << "Enter report name: ";
      getline(cin, report_name); …
Run Code Online (Sandbox Code Playgroud)

c++ constructor if-statement class object

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

在Eigen中移动语义

关于Eigen,我有几个问题:

  1. 有没有人知道是否有任何计划支持很快在Eigen移动语义?在Eigen3网页的TODO列表中找不到任何内容.现在我正在使用这个swap技巧摆脱临时工,比如说

    MatrixXd foo()
    {
        MatrixXd huge_matrix(N,N); // size N x N where N is quite large
        // do something here with huge_matrix
        return huge_matrix; 
    }
    
    MatrixXd A(N, N); 
    A.swap(foo());
    
    Run Code Online (Sandbox Code Playgroud)

    我非常想swap用C++ 11风格编写上面的代码

    A = foo();
    
    Run Code Online (Sandbox Code Playgroud)

    而不必担心临时返回foo().

  2. C++ 98/C++ 03编译器可以优化代码A = foo();来摆脱这种临时性吗?或者最安全的赌注是使用swap()

c++ move eigen c++11

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

标签 统计

c++ ×2

c++11 ×1

class ×1

constructor ×1

eigen ×1

if-statement ×1

move ×1

object ×1