相关疑难解决方法(0)

构造函数不返回可用对象

我有一个构造函数的问题,它没有像我期望的那样工作.

如果我尝试像这样初始化我的类,它将工作,我得到一个可用的对象:

vector<float> v;
MyClass<2> a(v);
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试构建类似下面的类(应该是等效的),结果是非常意外的.编译或运行程序时没有错误消息/警告.但是如果你尝试在某处使用这个变量并调用它的方法(例如a.doSomething()),它就会崩溃.

我在构造函数中放了一些代码来通知我它是否被使用.事实证明,在这种情况下,构造函数中没有实际执行的代码.

MyClass<2> a(vector<float>());
Run Code Online (Sandbox Code Playgroud)

所以我想知道为什么会这样?第二次申报是非法的吗?

编辑:我将发布一些类的代码

template <int x>
class MyClass {
public:
    vector<float> v;
    MyClass<x>(vector<float> v1) {
      v = v1;
    }

};
Run Code Online (Sandbox Code Playgroud)

c++ most-vexing-parse

8
推荐指数
1
解决办法
1459
查看次数

标签 统计

c++ ×1

most-vexing-parse ×1