标题:求大佬解决问题。
只看楼主
复旦
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:81
专家分:124
注 册:2018-10-29
结帖率:100%
 问题点数:0 回复次数:5 
求大佬解决问题。
下面是矢量类的构造函数  。可以接受N个double型参数。

myvector(int count,...)    //N参数构造函数
    {
        N=count;
        element=new double[N];              
        va_list ap;
        va_start (ap,count);
        for (int i=0;i<N;i++)
        {
            element[i]=va_arg(ap,double);
        }
        va_end(ap);
    }

但是如果 Vector a(3,2,3,4);这样写的话,
因为2,3,4编译器识别为int型数据,所以构造函数里不会执行赋值代码。
有能让构造函数接受N个double或int型参数后进行赋值的方法吗?
搜索更多相关主题的帖子: 构造函数 double 参数 int count 
2018-10-30 23:25
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
为什么要用 可变参数函数 呢,
为什么不用 std::initializer_list 呢?
2018-10-31 10:03
复旦
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:81
专家分:124
注 册:2018-10-29
得分:0 
我用xshell软件在Linux服务器上用vim编辑器写代码。
C11的新的东西vim支持吗?
2018-10-31 13:04
复旦
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:81
专家分:124
注 册:2018-10-29
得分:0 
还有,用了std::initializer_list,好像也只能接受一种类型的数据,不能解决问题。
2018-10-31 13:09
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
得分:0 
程序代码:
#include <iostream>

using namespace std;
double arr[N] {0};        //N 为 count 的输入值, 这里作为伪代码
size_t _index {0};        //arr 的数组下标, 从 0 开始, 最大到 N - 1
//处理不同类型的可变参数
template <typename T>
void add_to_arr(T &&t) {
    arr[_index++] = static_cast<double>(t);
}
template <typename T, typename ...Args>
void add_to_arr(T &&t, Args &&...args) {
    arr[_index++] = static_cast<double>(t);
    add_to_arr(std::forward<Args>(args)...);
}
int main(int argc, char *argv[]) {
    add_to_arr(1ul, 2l, 3.7f, 's', 9, 111ll);
    for(auto i {0}; i < _index; ++i) {
        cout << arr[i] << endl;
    }
}
2018-11-01 18:51
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
得分:0 
回复 4楼 复旦
看我上面这个例子, 你可以仿照我这个将你的改一下
2018-11-01 18:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490841-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.785134 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved