将1d或2d向量传递给同一类的构造函数

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (4)

我即将创建类,处理双向的2d向量。我想传递矢量矢量,或简单的双精度矢量(如果第二个维度是1个元素宽)传递给构造函数。此外,它是用于编辑底层数据的模态对话框,因此,我通过引用传递矢量。

一些代码供我参考我想要实现的目标:

class TableEditDialog {
    using Table2d = std::vector<std::vector<double>>;

public:
    TableEditDialog(Table2d & data) : m_data( data ) {}
    TableEditDialog(std::vector<double> & data); // ?

private:
    Table2d& m_data;
};

在传递具有N个元素的双精度矢量的情况下,我需要m_data是,或者vector<vector<double>>包含一个元素的N个矢量,或者N个元素的一个矢量。

我试图利用委托构造函数但没有成功。此外,我试图在第二个构造函数中创建新的临时2d向量,但它打破了通过引用传递来编辑基础数据的想法。

提问于
用户回答回答于

创建TableEditDialog一个类模板,以便在构造时指定类型。

template<class T>
class TableEditDialog {
public:
  TableEditDialog(T& data) : m_data( data ) {}
private:
  T& m_data;
};

您还可以创建一个函数来帮助进行类型推导:

template<class T>
TableEditDialog<T> make_table_edit_dialog(T& data) {
  return data;
}

然后你可以这样做:

std::vector<double> d1d;
std::vector<std::vector<double>> d2d;

auto ted1 = make_table_edit_dialog(d1d);
auto ted2 = make_table_edit_dialog(d2d);

所属标签

可能回答问题的人

  • 嗨喽你好

    7 粉丝480 提问8 回答
  • uncle_light

    5 粉丝518 提问7 回答
  • Richel

    4 粉丝0 提问6 回答
  • 人生的旅途

    10 粉丝484 提问6 回答

扫码关注云+社区

领取腾讯云代金券