草庐IT

c++ - 如何在命名空间中导入 C++ 类的 dll

我阅读了一些文档,其中提供了与C兼容的函数的简单示例。__declspec(dllexport)MyFunction();我对此很满意。我写了一个小应用程序使用这个dll的功能。我使用了显式链接LoadLibrary()函数。C风格的函数可以毫无问题地工作。但是当我把我的课写成namespaceDllTest{classTest{public:__declspec(dllexport)Test();__declspec(dllexport)voidFunction(int);__declspec(dllexport)intgetBar(void);private:intbar;};}#

对于指向同一基类的其他类的指针,C++11 非静态数据成员统一初始化失败

我是一名C老手,他试图通过将我的旧状态机框架从C移植到C++11来学习C++11。我的想法是为状态机本身创建一个类,然后为其中的状态创建一个嵌套类。状态可以是分层的,即超状态和子状态。框架需要了解状态的超状态,为此我在嵌套状态类中有一个指针(state*superstate)。我的问题是我打算通过直接在机器类中使用构造函数来设置超状态指针,这在C++11中应该是可能的,通过使用统一初始化进行非静态数据成员初始化。但由于某些原因,当设置为另一种类型的状态/类时,它无法编译(substateB3{superstateA})。但如果我稍后为此目的使用特定函数(set_superstate)设

c++ - 具有 move 构造函数和赋值的类的默认复制构造函数和赋值

假设我有这个类(class):classTest{public:Test();};据我所知,编译器提供了默认的复制构造函数和赋值运算符,它们将其他实例的每个成员分配给当前实例。现在我添加move构造函数和赋值:classTest{public:Test();Test(Test&&other);Test&operator=(Test&&other);};这个类是否仍然包含编译器生成的复制构造函数和赋值运算符,或者我需要实现它们?编辑。这是我的测试:classTest{public:Test(){}Test(Test&&other){}Test&operator=(Test&&other)

c++ - 如何使用 C++ lambda 捕获类的一些(但不是全部)成员变量

以下虚拟示例在现实世界中可能没有真正意义。但它解释了这个问题。我有一个classFoo,它的成员是firstname和lastname。函数ForEachMessage采用lambda。我希望它只捕获Foo的firstname而不是lastname。我该如何实现?#include#include#includeusingnamespacestd;vectormessagesList;voidForEachMessage(functioncallBack){for(constauto&str:messagesList){callBack(str);}}classFoo{public:st

c++ - C++14 中标准布局类的定义

在C++14的[class]/7中定义了一个standard-layout类,如下(重点是我的):标准布局类是这样的类:(7.1)—没有非标准布局类型的非静态数据成员类(或此类类型的数组)或引用,(7.2)—没有虚函数(10.3)也没有虚基类(10.1),(7.3)—对所有非静态对象具有相同的访问控制(条款11)数据成员,(7.4)—没有非标准布局的基类,(7.5)—在大多数派生中没有非静态数据成员classand至多一个具有非静态数据成员的基类,或者有没有具有非静态数据成员的基类,并且(7.6)—没有与第一个非静态类型相同的基类数据成员。我关心的是关于项目符号(7.5)的问题:如何可

c++ - 在 C++ 类的每个成员之前是可接受的用法访问说明符

我写了一些c++代码publicclassSomeClass{private:intm_CurrentStatus;intm_PreviouseStatus;public:intget_CurrentStatus(){returnm_CurrentStatus;}intget_PreviouseStatus(){returnm_PreviouseStatus;}}C#风格publicclassSomeClass{private:intm_CurrentStatus;private:intm_PreviouseStatus;public:intget_CurrentStatus(){re

c++ - 从 C++ 中同一个类的另一个成员函数中调用成员函数,Objective C

考虑以下几点:classA{//datamembersvoidfoo(){bar();//isthispossible?orshouldyousaythis->bar()notethatbarisnotstatic}voidbar(){}}//endofclassA如何从另一个内部调用成员函数?静态函数如何影响“this”的使用。应该在对象上调用函数吗? 最佳答案 Nawaz是正确的:'this'是隐含的。一个异常(exception)是如果foo是静态函数,因为在静态函数中没有“this”。在那种情况下,您不能使用bar()除非b

c++ - 在另一个类的声明中将参数传递给类构造函数

我有这样的东西:#includeusingnamespacestd;classFirstClass{public:FirstClass(int_vx):vx(_vx){}intx(){returnvx;}private:intvx;};很明显,我必须写:intmain(){FirstClassObject1(666);cout一切正常。但问题是,当我想在另一个类(class)中使用它时:#includeusingnamespacestd;classFirstClass{public:FirstClass(int_vx):vx(_vx){}intx(){returnvx;}private

c++ - 忽略 C++ 中模板类的重复显式实例化

如果我有一个类:templateclassMyClass{//...};然后我显式地实例化它:templateclassMyClass;templateclassMyClass;//secondtime我在某些编译器上遇到错误(例如Clang,但在VC++2010上没有)。我为什么要这样做?好吧,在某些情况下T可能是另一种类型的typedef。templateclassMyClass;templateclassMyClass;对于某些构建选项,my_type_1与my_type_2相同,在其他情况下则不同。我如何确保以上内容在所有情况下都能编译?有没有办法忽略重复的实例化?

c++ - 将同一 header 中定义的类的定义拆分到多个源文件中是否合法?

在C++中,是否允许将同一个头文件中定义的类的定义拆分到多个源文件中?例如,如果我有一个定义类Quad2和Quad3的文件,我是否可以在名为Quad2.cpp的文件中定义类Quad2,在名为Quad3.cpp的文件中定义类Quad3,但仍然在同一个头文件Quad.h中定义这两个类?这会被认为是非法的吗? 最佳答案 是的,您可以在不同的实现文件中实现同一个头文件中的不同类。头文件只不过是在编译时注入(inject)到源代码中的文本内容。正确的编译器完全没有header的概念。在编译器看到任何内容之前,header在预处理器中解析。因此