lijialijialijia 发表于 2019-7-7 20:23:55

请大神看看关于C++类的构造函数初始化

#include<iostream>
#include<string>
#include<valarray>

//一个包含两个参数的类模板
template<typename T1 , typename T2>
class My_Pair
{
private:
    T1a;
    T2b;
public:
    My_Pair(T1 & avar , T2 & bvar):   a(avar) , b(bvar)   {}          //构造函数
    My_Pair();

    //返回成员类型的引用 能够通过赋值重新设置存储的值
    T1 & First()      { return a; }
    T2 & Second()       { return b; }

    T1First()          const       { return a; }
    T2Second()         const       { return b; }

};

typedefstd::valarray<int>   IntArray;
typedefMy_Pair<IntArray , IntArray>      PairArray;

// 一个显示葡萄酒名称 年份 和该年生成的瓶数的类
class Wine
{
private:
    PairArray       W_pai;            //用于存储葡萄酒年份和瓶数的对象

    std::string   W_name;         //葡萄酒的名字

public:
    //构造函数
    Wine(const char & str , const int   w_year[] , const intw_bot[] , int n);

};

int main()
{










    return 0;
}



Wine::Wine(const char & str , const intw_year[] , const intw_bot[] , int n)
{
    IntArray A(w_year , n);                                          //这里初始化报错了 求大神告知这里应该怎么初始化想了半天也没有想出怎么初始化
    IntArray B(w_bot , n);
   
    W_pai = PairArray(A , B);

    W_name = str;

}

报错内容
|| undefined reference to `My_Pair<std::valarray<int>, std::valarray<int> >::My_Pair()'|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

Croper 发表于 2019-7-7 22:55:05

你的My_Pair()没有函数实现。但你    PairArray       W_pai;这里又隐式调用了它的默认构造函数
页: [1]
查看完整版本: 请大神看看关于C++类的构造函数初始化