gpt4 book ai didi

c++ - 嵌套类指针的特殊行为?

转载 作者:行者123 更新时间:2023-11-27 23:57:06 25 4
gpt4 key购买 nike

我正在使用 mysql-conntector++,我对指针类型的一些行为很感兴趣,例如:

sql::Driver *driver__; 

sql::Connection *connection__;

显然 ::Driver::Connectionsql 的嵌套类,当我尝试在堆上初始化这些指针中的任何一个时:

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

产生的

最佳答案

How do libraries implement this type of behavior with nested classes and pointers to such classes?

抽象类的具体实例只作为基类的子对象存在。实现这些的方法是继承:

struct MyDriver : sql::Driver {
//TODO implement all pure virtual functions of sql::Driver
}

// imaginary implementation
Driver* get_driver_instance() {
static MyDriver instance;
return &instance;
}

附言。 Driversql( namespace ?)的成员这一事实在其他方面对用户并不重要,除了它影响名称查找的方式。

关于c++ - 嵌套类指针的特殊行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41839281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com