gpt4 book ai didi

c++ - "undefined reference"到从静态方法访问的模板类的静态成员

转载 作者:可可西里 更新时间:2023-11-01 15:41:16 32 4
gpt4 key购买 nike

我有一个静态类方法需要访问一个指针 MyTypePointer,因此必须将其声明为静态。因为它是一个模板类,所以我必须将方法放在头文件中,但我不能在头文件中定义 MyTypePointer 。

因此,由于未声明 MyTypePointer,我得到了“undefined Reference” 错误。我怎样才能使这项工作/声明 MyTypePointer。

myclass.h

template <typename A, typename B>
class PathfindingClass {
typedef std::vector<GenericEdgeClass<A, B>*> MyType;
static MyType *MyTypePointer;
};

template <typename A, B>
void MyClass<A, B>::MyMethod(int x, int y) {
//do something with MyTypePointer
}

非常感谢。

最佳答案

这是一个迟到的完整引用答案,因为这个问题被链接为另一个问题的引用。

已声明但未定义的静态字段的最小损坏示例可能是:

template<typename T>
class A
{
public:
static T val;
static void init()
{
val=0;
}
};

int main()
{
// A::init();
A<double>::init();
return 0;
}

修复只是在类定义之后定义静态字段:

template<typename T>
class A
{
public:
static T val;
static void init()
{
val=0;
}
};

template<typename T> T A<T>::val; // only change here

int main()
{
// A::init();
A<double>::init();
return 0;
}

关于c++ - "undefined reference"到从静态方法访问的模板类的静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20642103/

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