模板类构造函数采用参数时出错
Error with template class constructor taking arguments
我一直在互联网上寻找解决问题的方法,但没有找到一个像我(我认识)这样的示例问题。
我正在尝试为我的模板类创建一个简单的构造函数,但我的语法或实现一定有问题,因为我在测试它时不断收到相同的编译错误。这似乎与我传递参数的方式有关,因为如果我创建一个没有参数的对象,它可以很好地编译(这似乎很奇怪,因为我没有不接受参数的构造函数)。
vecxd.hpp:
#ifndef JF_VecXd
#define JF_VecXd
template <class T>
class VecXd : public VecXd<T>{
public:
VecXd(T a, T b, T c);
private:
T x, y, z;
};
template <class T>
VecXd<T>::VecXd(T a, T b, T c){
x = a;
y = b;
z = c;
}
#endif
测试.cpp:
#include "vecxd.hpp"
int main(){
int a = 3, b = 4, c = 5;
VecXd<int> tVec(a,b,c);
return 0;
}
错误:
3 vecxd.hpp 无效使用未定义的类型 'class VecXd'
但是当我创建没有参数的对象时,它会编译,如下所示:
int a = 1, b = 2, c = 3;
VecXd<int> tVec();
//Instead of this: VecXd<int> tVec(a, b, c)
非常感谢您的时间,我感谢我能就此事获得的任何建议。
这个:
template <class T>
class VecXd : public VecXd<T> {
应该是
template <class T>
class VecXd {
因为首先这意味着类型是从自身派生的 - 这永远无法工作。该错误是指不完整的基类,因为它是您自己声明的类。
似乎有效的是
VecXd<int> tVec();
仅仅因为这是一个函数声明。如果要有一个真实实例,请去掉括号:
VecXd<int> tVec;
您将遇到原始代码的错误。
相关文章:
- 为 NewObjectA() 函数创建 jvalues 的参数数组时出错 - JNI Invocation API
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- 使用一个参数的模板函数时出错(适用于 2)
- 为什么在函数参数前面添加 const 会出错?
- 变量用作C中的函数参数后出错
- 将私有数据成员作为默认参数传递给该类的公共方法时出错
- 使用 cvThreshold 时报告参数时出错
- STL 容器在函数中作为模板参数,在调用中出错
- 使用模板模板参数时出错
- 方法的参数列表出错
- 将 std::bind 应用于带有参数 <boost::asio::ip::tcp::socket> 时出错?
- 使用模板函数传递模板参数时出错
- 在 c++ 中调用将字符串作为参数传递的函数时出错
- 在运算符中将联合作为参数传递时出错<<
- 在C 中使用Caffe;无法将Caffe ::求解参数仪发挥作用而不会出错
- 尝试使用浮点参数运行重载函数时出错
- 尝试将 C++11 代码转换为 C++03 时默认函数模板参数出错
- Lua c++ lib sethook:钩子函数参数出错
- 在 Unix 中编译 c++ 时嵌套模板参数出错
- uniform_real_distribution c++的最小/最大参数出错