c++ - 在具有模板和继承的 C++ 中使用未声明的标识符

标签 c++ templates inheritance

<分区>

以下代码无法编译 - 使用了未声明的标识符。我使用 GCC 和 XCode 进行编译。

一切都在一个头文件中。

include "MyArray.h"

template <typename T>
class MyBase {
public:
  MyBase();
  virtual ~MyBase();
  void addStuff(T* someStuff);
protected:
  MyArray<T*> stuff;
};

template <typename T>
MyBase<T>::MyBase() {}
template <typename T>
MyBase<T>::~MyBase() {}

template <typename T>
void MyBase<T>::addStuff(T* someStuff) {
  stuff.add(someStuff);
}

// ---------------------

template <typename T>
class MyDerived : public MyBase<T> {
public:
  MyDerived();
  virtual ~MyDerived();
  virtual void doSomething();
};

template <typename T>
MyDerived<T>::MyDerived() {}
template <typename T>
MyDerived<T>::~MyDerived() {}

template <typename T>
void MyDerived<T>::doSomething() {
  T* thingy = new T();
  addStuff(thingy); //here's the compile error. addStuff is not declared.
}

谁有解释吗? 提前致谢!

最佳答案

尝试

this->addStuff(thingy);

关于c++ - 在具有模板和继承的 C++ 中使用未声明的标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10735611/

相关文章:

vector 映射的 C++ 映射作为实例成员

c++ - 使用 back_inserter 复制算法

c++ - 如何在C++中声明Magnitude类型?

c++ - 嵌套模板类的 Typedef

c++ - 可变参数模板函数的部分特化

c++ - 模板中的类使用不完整

c++ - 为什么我的基类构造函数之一被删除? (C++11)

swift - 类扩展了 SKScene 但无法访问其属性

java - 设计枚举通用行为

c++ - 从整数数组构造 bitset