微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Visual Studio 2019 调试器步入头文件而不是 cpp

如何解决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 文件中有关。

>

解决方法

两件事:

  1. 你必须在cpp文件中写入

    void DbConnection::ConnectToDatabase(const std::string databaseName) { ... }

等让 Retrieve 函数告诉编译器这是类的函数。

  1. 当您将 {} 放在函数声明之后时,您实际上在头文件中实现了该函数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。