【发布时间】:2019-12-28 13:48:04
【问题描述】:
我正在尝试为 OpenGL 统一变量创建一个类,我想为这个类使用模板。
看起来像这样:
template <typename T>
class UniformVar {
public:
UniformVar() = delete;
};
该类仅可用于某些类型名,例如 floats。
所以浮点数的声明如下所示:
template<>
class UniformVar<float> {
public:
UniformVar(Shader *shader, std::string varName);
float getVar();
void setVar(float var);
private:
Shader *shader;
std::string varName;
};
现在的问题是我不知道如何在cpp文件中定义构造函数。它看起来像这样:
template<>
UniformVar::UniformVar(Shader *shader, std::string varName) {
}
float UniformVar::getVar() {
}
void UniformVar::setVar(float var) {
}
在此代码的第二行中,我收到编译器错误'UniformVar' is not a class, namespace, or enumeration。
我试图做这样的事情:
UniformVar::UniformVar<float>(Shader *shader, std::string varName) {
但它不起作用。
【问题讨论】:
-
你试过
UniformVar<float>::UniformVar( ... )吗? -
@SamVarshavchik 谢谢,这行得通!你能把这个写成答案,这样我就可以结束这个问题了吗?