标识符“fill_vector”未定义,我不知道为什么

时间:2015-02-25 21:35:01

标签: c++ data-structures

int miniVector<T>::fill_vector(miniVector<T> &obj)
{
    int numofelements;
    cout << "For how many objects do you want to enter value<s>? ";
    cin >> numofelements;
    obj.resize(numofelements);
    int i;
    for(i = 0; i < numofelements; i++)
    {
        cin >> obj[i];
        obj.push_back(i);
    }
    return i;
}

int main()
{
    miniVector<int> v;
    cout << "int vector: " << endl;
    //fill_vector();
    int sizearray;
    sizearray = fill_vector<int>(v);
    sizearray = v.size();
    //display_vector(v, sizearray);
    return 0;
}

很奇怪为什么我一直收到错误消息idnetifier“fill_vector未定义。

2 个答案:

答案 0 :(得分:0)

fill_vector是类miniVector的成员函数。因此,您必须在此语句中指定要为其调用成员函数的对象(如果成员函数是非静态的)或类名称(如果成员函数是静态的)

sizearray = fill_vector<int>(v);

此调用也是错误的,因为该方法本身不是模板。

因此没有模板函数fill_vector的定义,编译器会发出错误。

答案 1 :(得分:0)

int miniVector<T>::fill_vector(miniVector<T> &obj)

这表示:类型为T的类miniVector的方法,它返回一个int并接受对类型为T的miniVector对象的引用。

您无法使用

调用此方法
sizearray = fill_vector<int>(v);

你必须这样称呼它:

sizearray = v.fill_vector(some_other_miniVector);

,其中

some_other_miniVector

miniVector<int> some_other_miniVector;