在构造函数调用中收到错误 C2512
Getting error C2512 in constructor call
当我从另一个类的构造函数调用一个类的构造函数时,我收到错误 C2512。我在文件底部使用模板实例,这样我就不必在标头中实现成员函数。通常,这是由于没有默认构造函数引起的,但我有。
维克·
template <class TYPE> class vec {
struct vecimp;
vecimp *imp;
public:
vec() { }
vec(const TYPE *, size_t);
~vec();
};
VEC.cpp
#include "vec.h"
template <class TYPE> struct vec<TYPE>::vecimp {
TYPE *arr;
size_t n;
vecimp(const TYPE *arr, size_t n)
{
this->arr = (TYPE *) malloc(n * sizeof(TYPE));
this->n = n;
}
~vecimp()
{
free(this->arr);
this->arr = NULL;
}
};
template <class TYPE> vec<TYPE>::vec(const TYPE *arr, size_t n)
{
this->imp =
new vecimp
<TYPE> // C2512 occurs here
(arr, n);
}
// member function implementations, dtor, etc
template class vec<int>;
这是错误消息文本
'vec::vecimp':没有合适的默认构造函数可用
所以我尝试向我的 vecimp
类添加一个默认构造函数,但随后它给了我编译器错误 C2275,与现在相同。
问题是你尝试创建一个vecimp<TYPE>
的实例,但vecimp
不是模板化结构。
如此简单
this->imp =
new vecimp
(arr, n);
会正常工作。
相关文章:
- 错误 C2512 视觉C++(并且不是循环依赖项)
- 错误 C2512:没有可用的适当默认构造函数:在构造函数中声明带有参数的对象!
- c++ 错误错误 C2512 没有合适的默认构造函数可用
- 错误 C2512 和 C3892 - 像游戏一样构建吃豆人
- 错误 C2512 'DerivedClass':没有可用的适当默认构造函数
- 错误C2512没有合适的默认构造函数,即使我有一个
- 错误 C2512:没有可用的适当默认构造函数(不是类)
- 预编译头文件中出现错误 C2512
- 结构,数组错误 C2512
- 在构造函数调用中收到错误 C2512
- 错误C2512没有合适的默认构造函数可用
- 没有显式构造函数的结构中出现错误C2512
- 错误C2512:没有合适的默认构造函数可用
- 错误C2512,但我有可用的默认构造函数
- 错误C2512:没有合适的默认构造函数可用
- 为什么我得到错误c2512:没有适当的默认构造函数可用
- 错误 C2512:'std::basic_ostream<_Elem,_Traits>':没有适当的默认构造函数可用于仅 Visual Studio
- c++错误c2512:没有可用的默认构造函数
- 错误 C2512:'Tile':没有可用的适当默认构造函数
- 错误C2512:没有合适的默认构造函数可用-如果在构造函数中初始化属性,为什么