gpt4 book ai didi

在 CPP 文件 (Visual Studio) 中实现的 C++ 模板错误

转载 作者:太空宇宙 更新时间:2023-11-04 13:42:21 25 4
gpt4 key购买 nike

我在头文件中声明了一个 C++ 类定义,如下所示:

template <class T>
class MyClass : public T
{

public:

STDMETHODIMP myMethod();

};

.cpp 中的实现是这样的:

template <class T>
STDMETHODIMP MyClass<T>::myMethod() {
// Implementation...
}

编译器 (Visual Studio) 提示方法实现,说“使用了不合时宜的东西:数据上的修饰符被忽略”以及“无法识别的模板声明/定义”。

知道出了什么问题吗?

编辑:

错误可能出在这里吗?

我正在尝试扩展 MyClass,所以我声明

class ChildClass : MyClass<SomeConcreteClass>
{
// Stuff...
};

最佳答案

  1. 模板函数的定义也必须在头文件中。 (此规则的唯一异常(exception)是如果模板仅在一个编译单元中实例化;在这种情况下,您可以将定义放在同一源中。)。因此,将实现从 .cpp 移到 header 中。

  2. 您在类声明中编写的 STDMETHODIMP 看起来也很可疑(并且可能是直接错误的来源)。您确定没有像 STDMETHOD 这样您应该在那里使用的宏吗?

关于在 CPP 文件 (Visual Studio) 中实现的 C++ 模板错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27318324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com