具有变量类型的构造函数的参数数量可变,在 C++ 中创建变量私有成员;

发布于 2024-10-17 09:26:06 字数 354 浏览 5 评论 0原文

我有非常繁重的任务要完成,而且我还没有找到任何足够好的解决方案。所以,这是描述: - 任务是评估多个数量可能不同的单维数组 - 好消息是可以指定数组类型

以及理想的执行方式: - 创建一个带有接受可变数量数组的构造函数的类 - 这些数组也应该用作属性(私有成员),因此可以在对象的生命周期期间对它们执行多个操作

我是如何尝试的: - 参数数量可变的构造函数成员函数(我不确定为什么这不起作用) - 带向量的构造函数应该是更好的方法,但是如何存储在单独的数组中指定类型的数组,这意味着您不能提前期望特定数组的特定数据类型 - 我尝试使用预处理器将可变数量的数组声明为私有成员,但似乎循环和其他代码在私有内部不能很好地工作:声明

任何人有任何想法吗?

I have really heavy task to achieve and I haven't found any solution good enough. So, here is the description:
- task is to evaluate multiple single dimension arrays which number can vary
- good news is that it is possible to specify types of arrays

And desirable way of doing it:
- creating a class with constructor that accepts variable number of arrays
- these arrays should be also used as properties (private members), so multiple operations can be done on(with) them during lifecycle of object

How I tried to do it:
- constructor member function with variable number of paramaters (I'm not sure why this doesn't work)
- constructor with vector should be better way, but how to store arrays that type is specified in separate array, meaning you can't expect certain datatype for certain array in advance
- I tried to declare variable number of arrays as private members with preprocessor, but it seems loops and other code do not work well inside private: declaration

Any idea from anybody?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一直在等你来 2024-10-24 09:26:06

接受可变数量数组的构造函数:

vector< vector<T> > ?

内部向量可以具有不同的大小,但必须具有相同的类型。

具有可变数量参数的构造函数成员函数

您可以使用具有可变数量参数的函数来创建一个类,看看 boost::bind 是如何工作的,它需要许多不同的参数列表。

boost mpl 可能会回答您想要做的事情,尽管还不清楚。

constructor that accepts variable number of arrays:

vector< vector<T> > ?

the inner vectors can be of different sizes but must be of the same type.

constructor member function with variable number of parameters

You can use a function with variable number of parameters that creates a class, look at how boost::bind works, that takes lots of different parameter lists.

boost mpl may answer what you are trying to do, although it is rather unclear.

海的爱人是光 2024-10-24 09:26:06

为什么不使用简单的参数化类?

如果您的编译器支持 C++0x,您还可以对参数数量可变的构造函数使用初始值设定项列表。

template<class ArrayType>
class ArrayContainer
{
   std::vector<ArrayType> m_arrays;

   public:
   ArrayContainer(std::initializer_list<ArrayType> arrays)
   {
     m_arrays.reserve(arrays.size());
     std::copy(arrays.begin(), arrays.end(), m_array);
   }
};

构造函数现在接受可变数量的数组。

auto container = new ArrayContainer({ a, b, c });

Why not use a simple parametrized class ?

If your compiler support C++0x you can also use initializer list for constructors with variable number of paramaters.

template<class ArrayType>
class ArrayContainer
{
   std::vector<ArrayType> m_arrays;

   public:
   ArrayContainer(std::initializer_list<ArrayType> arrays)
   {
     m_arrays.reserve(arrays.size());
     std::copy(arrays.begin(), arrays.end(), m_array);
   }
};

The constructor now accepts variable number of arrays.

auto container = new ArrayContainer({ a, b, c });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文