Qt-'createD Tables'未在此范围内声明
Qt- 'createD Tables' was not declared in this scope
我要从数据库中删除记录并再次创建它。我有两个源代码类,Main.cpp和MainWindows.cpp。
在 Main.cpp 中,我定义了一个名为 createDBTables() 的函数
bool createDBTables()
{
QSqlQuery query;
query.exec("DROP TABLE contacts");
return query.exec("CREATE TABLE contacts ("
"id INTEGER PRIMARY KEY AUTOINCREMENT, "
"name VARCHAR(256) NOT NULL, "
"status VARCHAR(1024), "
"profpic VARCHAR(256), "
"register_state INTEGER NOT NULL, "
}
我在 Main 中声明了这个函数.cpp因为我想在这个源文件中使用它,我也想在另一个源文件中使用这个函数 - MainWindow.cpp-
我尝试使用它:
void MainWindows::showAccountDeactivation()
{
QMessageBox msgBox(this);
QFont font = msgBox.font();
msgBox.setWindowTitle(CGlobalZone::m_softwareName);
msgBox.setInformativeText(tr("Are you sure you want to remove your account?"));
msgBox.setStandardButtons(QMessageBox::Ok| QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Cancel);
msgBox.setButtonText(QMessageBox::Ok , tr("Ok"));
msgBox.setButtonText(QMessageBox::Cancel , tr("Cancel"));
int ret = msgBox.exec();
switch (ret)
{
case QMessageBox::Ok:
{
createDBTables();
}
break;
case QMessageBox::Cancel:
QTimer::singleShot(1500, this, SLOT(close()));
break;
}
}
但它向我展示了这一点:
"createD 表"未在此范围内声明我添加了这一行:bool createDBTables();
而不是createDBTables();
但是,它警告我未使用的变量,如何以正确的方式使用这个函数? 当我在 MainWindows 中声明 createDBTables() 时.cpp它警告我函数的重复定义。
快速回答:
您应该创建Main.h
文件,其中包含:
#ifndef MAIN_H
#defing MAIN_H
bool createDBTables();
#endif // MAIN_H
并将其包含在Main.cpp
和MainWindow.cpp
文件的开头:
#include "Main.h"
...
解释:
C++中的每个实体都必须有一个定义,并且最多可以有多个声明。您在Main.cpp
文件中编写的内容是一个定义。声明用于让编译器知道,此实体是在本单元或其他单元(如您的情况)的下方某处定义的。如果没有声明,编译器甚至不知道你的函数是否存在。这正是错误字符串中写入的内容。
如果想要了解更多信息,应阅读有关编译器和链接器工作原理的信息。
p.s.:我也同意Bowdzone的观点。您不应该在 main.cpp 中编写实用程序函数。公共设施函数属于公共设施单位。
相关文章:
- 错误:未在此范围内声明'reverse'
- 错误:"imread"未在此范围内声明
- 未在此范围内声明错误 'xy'
- Socklen_t未在此范围内声明
- 错误:'[' 之前预期的非限定 id 和错误:'users'未在此范围内声明
- "Main"已在当前范围内声明
- c++ 变量在宏的扩展中没有在这个范围内声明
- C++ 在编译过程中 strtok 函数 Eclipse 说没有在范围内声明?
- 'num1'未在此范围内声明
- 如何找到在本地范围内声明的变量的地址?
- NT状态未在此范围内声明
- 变量未在此范围内声明 数组线性搜索
- 包含文件中的 Typdef "未在此范围内声明"
- 'ClassName'和'ClassInstance'未在此范围内声明
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 代码作为 C 文件工作,但不作为C++文件,错误:'__builtin_types_compatible_p'未在此范围内声明
- 如何修复错误:"vreinterpretq_u32_f64"未在此范围内声明 - 在Android上使用Eigen构建
- 如何修复C++中的"arrStud未在此范围内声明"错误
- 错误:"SHGetKnownFolderPath"未在此范围内声明
- 错误:'Sprite'未在此范围内声明