繁体   English   中英

无法在 Visual Studio 2022 中包含 .cpp 和 .h 文件

[英]Cannot include .cpp and .h files in Visual Studio 2022

我创建了一个 class Dialog 并将它分成.cpp (Dialog.cpp) 和.h (Dialog.h)。 我的 cpp 文件如下所示:

#include "Dialog.h"
#include <iostream>
using namespace std;

namespace Model1
{
    void Dialog::initialize ()
    {
          cout << "initialization";
    }
}

这是我的 h 文件:

using namespace std;
class Dialog
    {
        public:
            void initialize ();
    };

当我在 visual studio 2022 中调试代码时,我得到以下信息:

cannot open source file "Dialog.h"
name followed by '::' must be a class or namespace name
Cannot open include file: 'Dialog.h': No such file or directory ConsoleApplication1 
symbol cannot be defined within namespace 'Model1'  ConsoleApplication1

当我将 header 文件更改为

using namespace std;
namespace Model1 {
    class Dialog
    {
    public:
        void initialize();
    };
}

现在我有这些错误:

cannot open source file "Dialog.h"
name followed by '::' must be a class or namespace name
Cannot open include file: 'Dialog.h': No such file or directory 

我该如何解决这个问题?

问题是在 header 文件中,您在全局命名空间中定义了 class Dialog ,而您试图在Model1命名空间中定义成员 function Dialog::initialize()

这将不起作用,因为class 的成员 function 的类外定义必须位于包含 class 的同一命名空间中

因此,要解决此问题,您可以在命名空间Model1中定义类(在标头中)或在全局命名空间中实现成员函数(在源文件中)。 这两种方法如下所示:

方法一

这里我们在header的命名空间Model1中定义class,源文件不变

对话框.h

namespace Model1   //added this namepspace here
{
class Dialog
    {
        public:
            void initialize ();
    };
}

工作演示 1


方法二

这里我们在源文件的全局命名空间中定义了成员function,并保持header文件不变

对话框.cpp

#include "Dialog.h"
void Dialog::initialize ()
{
      cout << "initialization";
}

工作演示 2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM