如何解决Visual Studio 2019 调试器步入头文件而不是 cpp
我创建了一个带有头文件、cpp 文件和主函数的小型 c++ 应用程序。
我希望头文件是一个 interface
,它只会定义我的函数和属性,但要实现的是 cpp 文件。
然而,当我创建我的文件时,在我的 main
函数中我有一个断点并尝试进入我的方法,它只是将我直接带到头文件定义而不是实现 cpp 文件。这是我的代码:
//header file
#pragma once
#include <string>
#include <sqlAPI.h>
class DbConnection
{
public:
int Id,Age;
std::string Name;
void ConnectToDatabase(const std::string databaseName) { }
void Retrieve(const std::string table) { }
};
这是我的 cpp 文件:
#include "DbConnection.h"
#include <string>
#include <sqlAPI.h>
#include <iostream>
SAConnection sqlCon;
SACommand sqlCmd(&sqlCon);
int Id,Age;
std::string Name;
void ConnectToDatabase(const std::string databaseName)
{
sqlCon.Connect(
databaseName,",SA_sqlServer_Client);
}
void Retrieve(const std::string table)
{
//code to retrieve data
std::cout << "success";
}
我的主要功能在一个单独的 cpp 文件中。我设置了一个断点并尝试进入方法 Retrieve
并将我带到头文件而不是 cpp。感谢您对调试的任何帮助。
#include "DbConnection.h"
#include <stdio.h>
#include <iostream>
int main()
{
DbConnection con;
con.ConnectToDatabase(
"databaseParameter");
con.Retrieve("tableParameter");
return 0;
}
我认为这是两件事之一,要么我在 Visual Studio 2019 中的调试器未设置为正确的设置,要么与我的 #include "DbConnection.h"
语句如何包含在两个 cpp 文件中有关。
解决方法
两件事:
-
你必须在cpp文件中写入
void DbConnection::ConnectToDatabase(const std::string databaseName) { ... }
等让 Retrieve 函数告诉编译器这是类的函数。
- 当您将 {} 放在函数声明之后时,您实际上在头文件中实现了该函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。