加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 为什么调试器总是跳过这个程序中的一行?

发布时间:2020-12-16 10:07:41 所属栏目:百科 来源:网络整理
导读:参见英文答案 My attempt at value initialization is interpreted as a function declaration,and why doesn’t A a(()); solve it?????????????????????????????????????5个 我正在编写一个名为Matrix的矩阵的模板类,我重写了这样的默认构造函数: templat
参见英文答案 > My attempt at value initialization is interpreted as a function declaration,and why doesn’t A a(()); solve it?????????????????????????????????????5个
我正在编写一个名为Matrix的矩阵的模板类,我重写了这样的默认构造函数:

template<typename _Tp,size_t m,size_t n> inline
Matrix<_Tp,m,n>::Matrix()
{
    for(size_t i = 0; i != m*n; ++i) val[i] = _Tp(0);
}

在我的测试文件中,我写道:

SC::Matrix<double,3,3> Mat();

当我构建程序时,所有这些都很好.但是当我运行测试程序时,我总是得到错误的结果.

当我试图找到原因时,我发现调试器总是跳过Mat的定义;在第一个我认为它可能是因为我在构建此程序后修改了文件,因此我删除了所有构建结果(由cmake自动生成)并重建它.但它没用,问题仍然存在.

有没有人可以帮我找到原因?我是否为此问题提供了足够的信息?

解决方法

你说“……调试器总是跳过……”,所以我假设你试图创建一个类型SC :: Matrix< double,3>的变量Mat.并查看它是如何默认初始化的.

如果这是真的,那么

SC::Matrix<double,3> Mat();

声明一个名为Mat的函数,不带args并返回SC :: Matrix< double,3>.当然,你无法“调试”函数声明.
如果要创建默认初始化变量write:

SC::Matrix<double,3> Mat{};

要不就

SC::Matrix<double,3> Mat;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读