嵌套类指针的特殊行为
Peculiar behavior of nested class pointers?
我正在使用mysql-conntector++,我对指针类型的一些行为感兴趣,例如:
sql::Driver *driver__;
或
sql::Connection *connection__;
显然,::Driver
和::Connection
是sql
的嵌套类,当我尝试在堆上初始化这些指针中的任何一个时:
sql::Driver *driver__ {new sql::Driver()};
错误:
error: invalid new-expression of abstract class type ‘sql::Driver’
sql::Driver *driver__ {new sql::Driver()};
库如何使用嵌套类和指向此类类的指针实现此类行为?
我已经查看了mysql-connector++源代码,似乎无法识别相关部分。
注意:上述错误是使用 CMake 产生的,-std=c++14
库如何使用嵌套类和指向此类类的指针实现此类行为?
抽象类的具体实例仅作为基类子对象存在。实现这些的方法是继承:
struct MyDriver : sql::Driver {
//TODO implement all pure virtual functions of sql::Driver
}
// imaginary implementation
Driver* get_driver_instance() {
static MyDriver instance;
return &instance;
}
附言。Driver
是sql
(命名空间?)的成员这一事实在其他方面对用户来说并不重要,除了它影响名称查找的方式。
事实上,当你声明
sql::Driver *driver__;
sql::Connection *connection__;
声明对实现以下接口的实例的引用:
- 一个 SQL 驱动程序
- 一个 SQL 连接
为了实例化此类实例,库以这种方式为您提供工厂
driver__ = get_driver_instance();
connection__ = driver->connect("tcp://127.0.0.1:3306", "root", "root");
实例化后,您将仅操作此类实例的公共接口。
相关文章:
- 嵌套类、继承和C++中的共享指针
- 如何从另一个嵌套类中调用某个封闭类的嵌套类的函数指针成员的值?
- 如何将值添加到嵌套结构中,该结构在C++中有两个指针
- 释放指向保留嵌套变量内存地址的结构的指针
- 带有指针的嵌套 foreach 循环?
- 包含指针成员的嵌套结构
- 通过嵌套的lambda中的值捕获指针导致Segfault
- 如何从嵌套类中访问指针
- 设计具有两个指向嵌套对象的指针的迭代器
- 通过指向成员的指针对嵌套访问进行编译时评估期间出现 GCC 错误
- 嵌套的 QVector 指针内存处理
- 为什么缺少此嵌套类的指针
- 嵌套类指针的特殊行为
- 嵌套智能指针运算符>
- 指向嵌套类中的成员函数的 C++ 指针
- 嵌套指针类型在iterator_traits有什么用?
- 访问模板参数T的嵌套类型,即使T是指针
- 正在为嵌套结构指针分配内存
- 在与 OpenMP 并行的嵌套 for 循环中写入共享数组(通过指针)如何产生错误的结果
- 嵌套绑定到成员,需要一个指针,得到了一个引用.做什么