未初始化的本地变量(变量是类中的对象)-MYSQL
Uninitialized Local Variable (The variable is an object from a class) - MYSQL
我使用的是Windows 10 Visual Studio 2015。
好吧,不管怎样,这是我的代码,我得到了这个错误:
uninitialized local variable 'driver'
我只是在遵循MySQL主网站上的一个教程(示例),这似乎发生了,所以有人能解释为什么要这样做吗?或者告诉我一个修复方法。:)我试着让它保持静态,直到我点击按钮,它才通过,然后我收到了一条无效的写入内存消息。希望这足以让你告诉我发生了什么。
LRESULT CALLBACK WndProc(...)
{
...
switch (LOWORD(wparam))
{
case SQL_BUTTON_LAUNCH:
using namespace sql;
Driver *driver;
Connection *con;
Statement *stmt;
ResultSet *res;
con = driver->connect("tcp://127.0.0.1:3306", "root", "root");
con->setSchema("test");
stmt = con->createStatement();
res = stmt->executeQuery("SELECT 'Hello World!' AS _message");
delete res;
delete stmt;
delete con;
//SQLConnection();
break;
}
}
您需要添加
driver = get_driver_instance();
在调用之前
driver->connect (..)
否则,Driver *driver;
只声明一个指针。不会为其分配有效值。因此,通过它调用connect(..)
会取消引用该指针,从而导致未定义的行为。未定义行为的一个特殊情况是问题中提到的内存访问违规错误。
当调用get_driver_instance ()
时,它会执行获取有效指针所需的步骤并返回该指针,然后您可以使用该指针进行连接。
相关文章:
- 你能重载对象变量名本身返回的内容吗
- 将包含C样式数组的对象初始化为成员变量(C++)
- 将地址分配给本地指针后,公共对象的变量将消失
- 为什么我们再次从结构对象创建结构变量?
- 如何在初始化列表中的构造函数之后初始化变量/对象?
- 从变量对象指向基对象
- C++ - 我可以创建编译时变量对象吗?
- 动态数组添加元素而不创建结构变量/对象
- Visual Studio C++ 编译器在局部变量对象上的奇怪行为
- 其中定义函数的静态局部变量对象
- QT良好的全局变量/对象处理
- r 值的匿名变量对象与真实对象
- QT 测试 - 变量/对象失去价值
- 访问私有变量对象
- C++访问具有相同名称的变量/对象的命名空间中的全局变量/对象
- C++-访问全局变量对象
- 表达式必须具有类类型:c++,将实例变量对象作为指针传递(点表示法参数)
- C++变量/对象和堆内存管理
- 如何在每次迭代中创建一个新变量/对象的循环
- 初始化现有变量/对象的新构造函数