[英]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 ();
};
}
这里我们在源文件的全局命名空间中定义了成员function,并保持header文件不变。
对话框.cpp
#include "Dialog.h"
void Dialog::initialize ()
{
cout << "initialization";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.