gpt4 book ai didi

c++ - 在tpp文件中声明模板成员函数

转载 作者:行者123 更新时间:2023-12-03 07:38:11 26 4
gpt4 key购买 nike

我有一个A类,其中包含模板成员函数AFunc。为了将定义与声明分开,我在A中一起声明了AFuncA.h。然后,我在文件AFunc的底部A.tpp#include "A.tpp"中定义成员函数A.h
在我看来,这一切都像有效的C++。但是,Visual Studio编译器将引发错误:A.tpp(8,139): error C2244: 'A::AFunc': unable to match function definition to an existing declaration明确的解决方案是在定义AFunc之前,在A.tpp文件的顶部包含一个AFunc的声明。该声明在A.h中,因此我们要在A.h中包括A.tpp,在A.tpp中包括A.h。这种包含是周期性的。

// A.h

class A{
template <class T>
void AFunc();
};
#include "A.tpp"
// A.tpp

template <class T>
void A::AFunc(){
// definition
}
解决此问题的典型解决方案是什么?

最佳答案

您是要给编译器提供文件“A.tpp”还是包含“A.h”的另一个C++源文件?您以这种方式进行结构化,我认为后者会给您您所期望的行为。抱歉,我没有太多VS经验。

关于c++ - 在tpp文件中声明模板成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64993450/

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