VS2017报错:未提供初始值设定项
今天在使用VS2017写程序时,报错:
出错的代码如下:
#include "pch.h"
#include <iostream>
#include <thread>
using namespace std;
class TA
{
public:
TA(int &i);
~TA();
//TA(const TA& ta); //拷贝构造函数
void operator()()
{
cout << "我的线程开始执行了" << endl;
cout << "我的线程结束了" << endl;
}
private:
int &m_i;
};
TA::TA(int &i)
{
this->m_i = i;
cout << "TA的构造函数" << endl;
}
TA::~TA()
{
cout << "TA的析构函数" << endl;
}
//
//TA::TA(const TA &ta)
//{
// this->m_i = ta;
//}
int main()
{
int i = 6;
TA ta(i);
thread mytobj(ta);
mytobj.join();
cout << "主线程执行结束" << endl;
return 0;
}
在网上查找资料后找到原因:
可以初始化const对象或引用类型的对象,但不能对他们赋值。在开始执行构造函数的函数体之前,必须完成初始化。初始化const或引用类型数据成员的唯一机会是在构造函数初始化列表中。
也就是说在类TA中声明了引用m_i,只能在构造函数初始化列表中进行初始化。
将上面的代码修改如下后错误消失:
#include "pch.h"
#include <iostream>
#include <thread>
using namespace std;
class TA
{
public:
TA(int &i) :m_i(i) {};
~TA();
//TA(const TA& ta); //拷贝构造函数
void operator()()
{
cout << "我的线程开始执行了" << endl;
cout << "我的线程结束了" << endl;
}
private:
int &m_i;
};
TA::~TA()
{
cout << "TA的析构函数" << endl;
}
//
//TA::TA(const TA &ta)
//{
// this->m_i = ta;
//}
int main()
{
int i = 6;
TA ta(i);
thread mytobj(ta);
mytobj.join();
cout << "主线程执行结束" << endl;
return 0;
}
- 参考资料:
1 《必须在构造函数基/成员初始值设定项列表中初始化》 https://www.cnblogs.com/zzyoucan/p/3570493.html?utm_source=tuicool&utm_medium=referral
VS2017报错:未提供初始值设定项的更多相关文章
- [转载]vs2012中使用Spring.NET报错:Spring.Context.Support.ContextRegistry 的类型初始值设定项引发异常
学习使用Spring.NET中的时候,写了一个Demo,在运行时报了一个错误:Spring.Context.Support.ContextRegistry 的类型初始值设定项引发异常. 重新整理思绪, ...
- “System.Transactions.Diagnostics.DiagnosticTrace”的类型初始值设定项引发异常[WCF]
未处理System.TypeInitializationException HResult=-2146233036 Message=“System.ServiceModel.Diagnostics ...
- “NHibernate.Cfg.Configuration 的类型初始值设定项引发异常。”的解决方法【备忘】
今天搞到NHibernate时,突然报了一个“NHibernate.Cfg.Configuration 的类型初始值设定项引发异常.”的异常. 详细异常信息“System.IO.FileLoadExc ...
- C# static 字段初始值设定项无法引用非静态字段、方法或属性
问题:字段或属性的问题字段初始值设定项无法引用非静态字段.方法 下面代码出错的原因,在类中定义的字段为什么不能用? public string text = test(); //提示 字段或属性的问题 ...
- Code First 迁移----官方 应用程序启动时自动升级(MigrateDatabaseToLatestVersion 初始值设定项)
Code First 迁移 如果使用的是 Code First 工作流,推荐使用 Code First 迁移改进应用程序的数据库架构. 迁移提供一组允许以下操作的工具: 创建可用于 EF 模型的初始数 ...
- Oracle.DataAccess.Client.OracleCommand”的类型初始值设定项引发异常
Oracle.ManagedDataAccess.dll 连接Oracle数据库不需要安装客户端 最开始,连接Oracle 数据是需要安装客户端的,ado.net 后来由于微软未来不再支持 Syste ...
- “SAP.Middleware.Connector.RfcDestinationManager”的类型初始值设定项引发异常
在VS2015中使用SAP Connector 3.0(SapNco)的.net4.0x86版本开发时,程序运行到RfcDestinationManager.TryGetDestination时报错: ...
- C#中异常:“The type initializer to throw an exception(类型初始值设定项引发异常)”的简单分析与解决方法
对于C#中异常:“The type initializer to throw an exception(类型初始值设定项引发异常)”的简单分析,目前本人分析两种情况,如下: 情况一: 借鉴麒麟.NET ...
- “System.Data.SqlClient.SqlConnection”的类型初始值设定项引发异常---解决方案
"System.Data.SqlClient.SqlConnection"的类型初始值设定项引发异常 问题出在了 .net 的C:\WINDOWS\Microsoft.NET\Fr ...
随机推荐
- 运维自动化之ansible的安装与使用 转
运维自动化之ansible的安装与使用 随着服务器数量的增长,我们需要一个批量工具去提高工作效率,之前用的是puppet,ansible的简单,适用让我眼前一亮,决定写一篇ansible从安装到基本配 ...
- IO负载高来源定位pt-ioprofile
1.使用top -d 1 查看%wa是否有等待IO完成的cpu时间,简单理解就是指cpu等待磁盘写入完成的时间:IO等待所占用的cpu时间的百分比,高过30%时IO压力高: 2.使用iostat -d ...
- solr的访问权限管理及ubuntu下iptables的设置
Apache Solr 是一个开源的搜索服务器,该平台默认允许匿名访问,攻击者可读取平台中各类敏感信息.之前考虑过增加账号密码访问,但是没有搞定,所以采用了曲线救国的方式,设置solr服务器只允许部分 ...
- 会话跟踪之Cookie技术
1. Cookie会话跟踪技术介绍 会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,可以在客户 ...
- FTP协议的两种工作模式简单解析!
转载自百度百科:http://baike.baidu.com/link?url=KaBZmDM4IZ2v56MyoOnpjqKr0gADv_BRbgjlscYdyvh3-zDwINOHNPSi9Jlp ...
- firewalld无法使用解决
一.安装完Python3.6.5后无法使用firewalld解决 解决:需要把/usr/sbin/firewalld./usr/bin/firewall-cmd 的头部内容改为原来的 pyton2.7 ...
- SQLSERVER 和 ORACLE 查询数据库文件大小
SQLSERVER: SQLSERVER一个库的文件分为数据文件(行数据)和日志文件两个文件,详情可以在数据库的属性->文件中查看. 在资源管理器中打开文件所在路径可以直接看到这两个文件 但是, ...
- 【C语言工具】AddressSanitizer - 内存检测工具
Github 地址:https://github.com/google/sanitizers Wiki 地址:https://github.com/google/sanitizers/wiki/Add ...
- Linux 命令 - man 查看命令的文档
man 命令是 Linux 中最常用的命令,碰到任何让你疑惑的命令,都可以 man 一下来查看详情.不只是 shell 命令,C 语言库函数和系统调用等内容也可以通过 man 命令查看. man 命令 ...
- Intellij IDEA 常见问题
右击项目时,没有 Java Class,只能创建其他文件 IDEA 还没有将这个项目识别为 Maven 项目时,会出现这种情况.此时右键无法创建类. 解决办法: 手动为 IDEA 指定项目类型:如果编 ...