我的构造函数有问题,它没有像我预期的那样工作。
如果我尝试像这样初始化我的类,它将起作用并且我得到一个可用的对象:
vector<float> v;
MyClass<2> a(v);
但是,如果我尝试构建一个像下面这样的类(应该是等效的),结果是非常出乎意料的。编译或运行程序时没有错误消息/警告。但是如果你尝试在某个地方使用这个变量 a 并调用它的方法(例如 a.doSomething()),它就会崩溃。
我在构造函数中放了一些代码来通知我是否使用了它。事实证明,在这种情况下,构造函数内的代码实际上并没有被执行。
MyClass<2> a(vector<float>());
所以我想知道为什么会这样?第二次申报违法吗?
编辑:我会发布一些类的代码
template <int x>
class MyClass {
public:
vector<float> v;
MyClass<x>(vector<float> v1) {
v = v1;
}
};