"A"之前的预期构造函数、析构函数或类型转换

expected constructor, destructor, or type conversion before "A"

本文关键字:析构函数 类型转换 构造函数      更新时间:2023-10-16
template <typename T>
class A {
    class B {
        typedef int INT;
        INT func(double e) {
            return INT(e * 3.6);
        }
    };
};

我的问题是从类声明中删除func函数的定义。这是我的程序的简化情况。编译器报错typedef.

这是我的尝试:

template <typename T>
A<T>::B::INT A<T>::B::func(double e) {
    return INT(e * 3.6);
}

编译错误是main.cpp:14: error: expected constructor, destructor, or type conversion before "A".

g++ 4.7直接指出了这个问题:

$ g++ 3.cpp
3.cpp:12:1: error: need 'typename' before 'A<T>::B::INT' because 'A<T>::B' is a dependent scope

:

    template <typename T>
    typename A<T>::B::INT A<T>::B::func(double e) {
//  ^^^^^^^^
        return INT(e * 3.6);
    }
相关文章: