c – 为什么调试器总是跳过这个程序中的一行?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c – 为什么调试器总是跳过这个程序中的一行?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1094字,纯文字阅读大概需要2分钟。
内容图文
![c – 为什么调试器总是跳过这个程序中的一行?](/upload/InfoBanner/zyjiaocheng/746/7a319ceaa87940af89742340332fbfaf.jpg)
参见英文答案 > 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,3>的变量Mat.并查看它是如何默认初始化的.
如果这是真的,那么
SC::Matrix<double, 3, 3> Mat();
声明一个名为Mat的函数,不带args并返回SC :: Matrix< double,3,3>.当然,你无法“调试”函数声明.
如果要创建默认初始化变量write:
SC::Matrix<double, 3, 3> Mat{};
要不就
SC::Matrix<double, 3, 3> Mat;
内容总结
以上是互联网集市为您收集整理的c – 为什么调试器总是跳过这个程序中的一行?全部内容,希望文章能够帮你解决c – 为什么调试器总是跳过这个程序中的一行?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。