c ++编译错误:'<'标记之前的预期初始化程序

时间:2012-05-17 04:07:51

标签: c++ templates vector initializer

我正在尝试编译自己编写的c ++程序。我在编译时遇到了麻烦。

quicksort.hpp 文件是:

#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include "cv.h"
#include "cv.hpp"
#include "highgui.h"

    void print<CvPoint3D32f>(vector<CvPoint3D32f>& input)
    {
            for ( int i = 0; i < input.size(); i++)
            {
            std::cout << input[i].y << " ";
            }
            std::cout << std::endl;

    }

test.cpp 是:

#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include "cv.h"
#include "highgui.h"
#include "quicksort.hpp"



    int main()
    {

        vector<CvPoint3D32f> input;
        for(int r = 0; r <= 9;r++)
        {
             input.push_back(cvPoint3D32f(2.0f+r,2.1f+r,3.1f+r)); 
        }
        std::cout << "Input: ";
        print(input);

    return 0;
    }

但是我得到这样的错误:

quicksort.hpp:4: error: expected initializer before ‘<’ token
test.cpp: In function ‘int main()’:
test.cpp:22: error: ‘print’ was not declared in this scope
test.cpp:22: error: expected primary-expression before ‘>’ token

是否有可能帮助我弄清楚为什么我会收到此错误?

我正在使用Debian Etch(Linux),g ++(gcc版本4.1.2 20061115(预发布)(Debian 4.1.1-21))和opencv 0.9.7-4

1 个答案:

答案 0 :(得分:2)

请说:

void print(vector<CvPoint3D32f>& points){

这可以解决问题。如果不是,你需要声明一个模板,如果真的需要查看你的CvPoint3D32f的模板专精,但这样就太过分了。