c++ - 使用单独编译时返回 typedef 类型

标签 c++ class vector typedef typename

这是我正在处理的文件:

类.h

#include <vector>

using std::vector;

template<class T>
class test {
private:
    vector<T> data;

public:

    typedef vector<T> vt;
    typedef typename vt::iterator it;

    test() {
    }
    ;
    it find(T x);
}

和class.cpp

#include "class.h"

it test::find(T x) {
    return find(data.begin(), data.end(), x);
}

如果我将 find 的实现放在类声明中,代码就可以工作。

但是,当我将实现与类分开时,编译器会报告错误“expected initializer before test”。

如何解决?问题是否与 typedef/typename 的范围有关?

抱歉我的英语不好,这是我的第二语言。

请指出我的代码中的任何错误以及我的英语

谢谢你的帮助。:D

最佳答案

当编译器看到 it ,它还不知道你的意思是 test<T>::it .所以你必须告诉它:

template<class T> typename test<T>::it test<T>::find(T x) {
    // The following line doesn't compile, but that's another issue:
    // return find(data.begin(), data.end(), x);
}

参见 http://ideone.com/Rtho2用于工作程序。

关于c++ - 使用单独编译时返回 typedef 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8377656/

相关文章:

c++ - Chris Hamilton 的 Compact Hilbert 代码 - 用于计算 Compact Hilbert 指数

javascript - 滚动我自己的需求

.net - 如何从python中的dll访问类?

r - 我怎样才能使矩阵和向量的处理规则化(例如,在 Matlab 中)

c++ - 用迭代器修改容器的内容

c++ - 如何在 QuickFIX 中制作登录部分

c++ - 仅初始化结构或数组的前 n 个成员

c++ - 使用 SFEMP3Shield.h 库尝试实现播放/暂停代码时出现错误消息

java - 比较来自不同类java的2个对象

algorithm - 如何计算一个点到矩形最近点的距离?