c++ - 从通用外部类返回指向嵌套内部类的指针

标签 c++ templates nested-class

我是 C++ 的新手,所以请多多包涵。我有一个名为 A 的泛型类。A 有一个名为 B 的嵌套类。A 包含一个名为 getB() 的方法,该方法应该返回 B 的一个新实例。但是,我无法编译我的代码。这是它的样子:#include

啊啊

template <class E>
class A {

public:
    class B {
    public:
        int data;
    };

    B * getB(); 
};

A.cpp

#include "A.h"

template <class E>
A<E>::B * A::getB() {
    return new B();
}

当我尝试编译它时,出现以下错误:

error: expected constructor, destructor, or type conversion before '*' token

有人知道我做错了什么吗?

谢谢,

螺旋

更新:

感谢大家的快速回复。我仍然无法正常工作。采纳此处列出的建议后,我有这样的事情:

啊啊

template <class E>
class A {

public:
    class B {
    public:
        int data;
    };

    B * getB(); 
};

template <class E>
typename A<E>::B * A<E>::getB() {
    return new B();
}

class C {

};

但是,当我尝试从 main 中使用它时,出现错误。这是我的主要方法:

主要.cpp

#include "A.h"

int main(int argc, char *argv[])
{
    A<C> *a = new A<C>();
    A<C>::B *b = a.getB();
}

当我尝试编译它时,出现以下错误:

error: request for member 'getB' in 'a', which is of non-class type 'A<C>*'

再次感谢您的快速回复。

螺旋

最佳答案

当“A”被模板化时,编译器不够聪明,无法判断“B”是一个类型。尝试使用类型名称。

template <class E>
typename A<E>::B * A<E>::getB() {
    return new B();
}

关于c++ - 从通用外部类返回指向嵌套内部类的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2587558/

相关文章:

c++ - cpp 中声明的全局变量在 objective c 中使用

c++ - 如何从非直接父基类继承构造函数

c++ - 是否有 gcc 的 __attribute__ (纯)的可移植等效项?

ruby - 通过 erb 模板输出 ruby​​ 数组

c++ - gcc 返回嵌套类错误

java - 非静态内部类中静态最终对象的编译错误

c++ - 如何在 beast 1.7 中打印 http 消息

python - SWIG 3 使用模板化构造函数包装未模板化的类

java - Java 语言规范中损坏的嵌套类名

python - 有没有办法将字典解压到 f 字符串 **模板** 中?