gpt4 book ai didi

C++ 对模板成员函数的 undefined reference

转载 作者:行者123 更新时间:2023-11-28 08:13:18 25 4
gpt4 key购买 nike

//Forward declaration
class MyType;

class Factory{
template<class T>
static T* CreateObject(T& newOb){
return &newOb;
}
//Other non template functions
}

//In main (error causing line)
MyType tmptype;
MyType* newMyType = Factory::CreateObject<MyType>(tmptype);

此代码导致此错误:对“MyType* Factory::CreateObject(MyType&)”的 undefined reference

我也收到这个警告:警告:自动导入已激活,但未在命令行中指定 --enable-auto-import

另外,如果我用的是int类型还是不行,这就排除了类型没有被正确包含的可能。

最佳答案

该函数采用引用,因此您需要向其传递一个变量,编译器可能会采用该变量的地址。

class Factory{
public:
template<class T>
static T* CreateObject(T& newOb){
return &newOb;
}
//Other non template functions
};

class MyType {};

int main() {
MyType a;
MyType* newMyType = Factory::CreateObject<MyType>(a);
}

关于C++ 对模板成员函数的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8453743/

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