【发布时间】:2020-02-21 04:02:24
【问题描述】:
我正在尝试使用静态类,但由于某种原因,我遇到了一个非常无用的错误。
这是我试图访问的静态类:
static class Camera
{
public:
Camera();
~Camera();
static glm::mat4 viewMatrix;
static void move(float x, float y, float z) {// add 3 more values for the cube
viewMatrix = glm::lookAt(glm::vec3(x, y, z),glm::vec3(0.0f, 0.0f, 0.0f),glm::vec3(0.0f, 1.0f, 0.0f));
}
static glm::mat4 getViewMatrix() {
return viewMatrix;
}
};
这是我尝试访问函数的方式:
Camera::move(xdist, ydist, zdist);
错误:
Severity Code Description Project File Line Suppression State
Error LNK2001 unresolved external symbol "public: static struct glm::detail::tmat4x4<float> Camera::viewMatrix" (?viewMatrix@Camera@@2U?$tmat4x4@M@detail@glm@@A) sample
【问题讨论】:
-
由于静态成员需要在程序启动时初始化一次,所以需要创建一个
.cpp文件,定义如下:glm::mat4 Camera::viewMatrix(parameters_here); -
@Gilles-PhilippePaillé viewMatrix 不接受任何参数。另外,这是课程的一部分,创建另一个 .cpp 是什么意思
-
链接的重复问题非常广泛,并没有提供任何关于 OP 应该如何解决他的问题的线索。应该提供更好的链接问题/答案。
-
什么是静态类?这不是 C++。
-
@LightnessRacesinOrbit 可能是 C# 甚至是 Java。绝对意味着被识别为重复的问题是无关紧要的。
标签: c++ visual-studio class static-classes