【发布时间】:2022-11-27 11:01:43
【问题描述】:
我创建了一个 Dialog 类并将其分成 .cpp 和 .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
当我将头文件更改为
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
我该如何解决这个问题?
【问题讨论】:
-
类的成员函数的类外定义必须在包含类所在的同一个命名空间中。但是您的代码的问题在于,在头文件中,您在全局命名空间中定义了 Dialog 类,而您试图在 Model1 命名空间中定义成员函数
Dialog::initialize()。有2种解决方法正如我在下面的answer 中所解释的那样。