首页 > 解决方案 > 范围解析运算符无法与模板一致地工作

问题描述

当我在模板结构中使用范围解析运算符作为方法声明的一部分时,它不起作用。但是,当我在同一模板结构内的方法定义中使用相同的范围解析运算符作为 sizeof() 的一部分时,它可以正常工作。有人可以帮我让它作为方法定义的一部分工作吗?我在 Visual Studio 中使用 Visual C++。这是问题的代码示例。

样本.h

struct Top {
    struct Data {
        int time;
    };

    Data* pData;
};

template<typename T>
struct App {
    T* pParent;

    T::Data* getDD() {  // error C2061: syntax error: identifier 'Data'
        return pParent->pData;
    }

    int getSize() {
        return sizeof(T::Data);   // This works fine
    }
};

样本.cpp

    main() {
        Top top;
        App<Top> app;

        Top::Data* pData = app.getDD();
        int size = app.getSize();
    }

标签: c++visual-c++

解决方案


推荐阅读