草庐IT

C++ 和 STL 进修类(class)

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,describetheproblem以及到目前为止为解决这个问题所做的工作。关闭8年前。Improvethisquestion我非常了解C和C++。我对指针有很多详细的了解,并且精通指针算法,并且在我的大学时代也曾研究过Win32API和一点MFC。在我以前的工作中,我没有机会看到这些事情,而是在其他领域工作。现在我想要的是一个速成或进修类(class):

c++ - 当作为参数传递时,为什么不能在子类函数中访问 protected 父类(super class)成员?

我收到一个编译错误,对此我有些困惑。这是在VS2003上。错误C2248:“A::y”:无法访问在“A”类中声明的protected成员classA{public:A():x(0),y(0){}protected:intx;inty;};classB:publicA{public:B():A(),z(0){}B(constA&item):A(),z(1){x=item.y;}private:intz;};问题在于x=item.y;访问被指定为protected。为什么B类的构造函数不能访问A::y? 最佳答案 因为这个:classb

c++ - 当作为参数传递时,为什么不能在子类函数中访问 protected 父类(super class)成员?

我收到一个编译错误,对此我有些困惑。这是在VS2003上。错误C2248:“A::y”:无法访问在“A”类中声明的protected成员classA{public:A():x(0),y(0){}protected:intx;inty;};classB:publicA{public:B():A(),z(0){}B(constA&item):A(),z(1){x=item.y;}private:intz;};问题在于x=item.y;访问被指定为protected。为什么B类的构造函数不能访问A::y? 最佳答案 因为这个:classb

c++ - 位域 "In-class initialization"结果为 "error: lvalue required as left operand of assignment"

structbitfield{inti=0;//okintj:8=0;//error:lvaluerequiredasleftoperandofassignment};使用C++11“类内初始化”功能初始化位域的正确语法是什么? 最佳答案 这是作为C++标准的核心问题1341提出的,但在2015年10月被C++核心工作组拒绝为NAD(“不是缺陷”)-参见http://open-std.org/JTC1/SC22/WG21/docs/cwg_closed.html#1341 关于c++-位

c++ - 位域 "In-class initialization"结果为 "error: lvalue required as left operand of assignment"

structbitfield{inti=0;//okintj:8=0;//error:lvaluerequiredasleftoperandofassignment};使用C++11“类内初始化”功能初始化位域的正确语法是什么? 最佳答案 这是作为C++标准的核心问题1341提出的,但在2015年10月被C++核心工作组拒绝为NAD(“不是缺陷”)-参见http://open-std.org/JTC1/SC22/WG21/docs/cwg_closed.html#1341 关于c++-位

c++ - C++中变量定义中的'class'关键字

在有人问之前,是的,这是家庭作业的一部分,是的,我在问之前做了很多谷歌搜索。我花了最后一个小时在Google上用很多很多不同的关键字进行了密集搜索,但找不到任何东西。那么问题来了:Whatdoesthefollowingvariabledefinitionmean:classMyClass*myClass;?我尝试使用类似classMyClass*myClass=newMyClass();的代码并发现它只是创建了一个指向MyClass新实例的指针。那么,使用class前缀有什么好处呢?有什么区别吗?有人有相关资源的链接吗?我根本找不到任何东西(除了“类定义”之外,真的很难找到其他东西!

c++ - C++中变量定义中的'class'关键字

在有人问之前,是的,这是家庭作业的一部分,是的,我在问之前做了很多谷歌搜索。我花了最后一个小时在Google上用很多很多不同的关键字进行了密集搜索,但找不到任何东西。那么问题来了:Whatdoesthefollowingvariabledefinitionmean:classMyClass*myClass;?我尝试使用类似classMyClass*myClass=newMyClass();的代码并发现它只是创建了一个指向MyClass新实例的指针。那么,使用class前缀有什么好处呢?有什么区别吗?有人有相关资源的链接吗?我根本找不到任何东西(除了“类定义”之外,真的很难找到其他东西!

c++ - 如何强制模板 <class> 从 BaseClassA 派生?

是否有可能强制模板来自某个基类,以便我可以调用基类函数?templatevoidSomeManager::Add(T){T->CallTsBaseClassFunction();//...dootherstuff} 最佳答案 当然,您可以将类型特征与SFINAE结合起来:#includetemplatetypenamestd::enable_if::value,void>::typeSomeManager::Add(T){T->CallTsBaseClassFunction();//...dootherstuff}虽然我并没有真正看

c++ - 如何强制模板 <class> 从 BaseClassA 派生?

是否有可能强制模板来自某个基类,以便我可以调用基类函数?templatevoidSomeManager::Add(T){T->CallTsBaseClassFunction();//...dootherstuff} 最佳答案 当然,您可以将类型特征与SFINAE结合起来:#includetemplatetypenamestd::enable_if::value,void>::typeSomeManager::Add(T){T->CallTsBaseClassFunction();//...dootherstuff}虽然我并没有真正看

c++ - 如何处理 C++ 中的 "cannot instantiate abstract class"错误?

如何处理C++中的“无法实例化抽象类”错误?我在这里查看了一些类似的错误,但它们似乎都不是我遇到的完全相同或问题。但是,话又说回来,我承认有几个要过去。这是编译错误:这将我带到此页面:http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k(C2259);k(VS.ERRORLIST)&rd=true编译错误C2259来自C++程序,但页面将抽象类称为“接口(interface)”:Wheneveryouderivefromaninterfaceandimplementtheinterfacemet