c++ - 班级没有成员发言?
问题描述
我刚刚开始学习类,我正在尝试制作一个非常简单的代码,称为 cat。
在我的 main、h 和 cpp 文件中,它说“Cat”类没有成员“speak”现在正在寻找可能的解决方案,但找不到任何帮助。如果我将 void Cat::speak() 放入我的 h 文件中,它会更正其他两个,但随后会显示“成员减速中不允许使用限定名称”//Main
#include <iostream>
#include "Cat.h"
using namespace std;
int main() {
Cat jim;
jim.speak(); //CLASS "CAT" HAS NO MEMBER "SPEAK"
return 0;
}
//cat.h
#pragma once
#ifndef CAT_H_
#define CAT_H_
class Cat {
public:
void::speak(); //THE GLOBAL SCOPE HAS NO SPEAK
};
#endif /*CAT_H_*/
//cat.cpp
#include <iostream>
#include "Cat.h"
using namespace std;
void Cat::speak() { //CLASS "CAT" HAS NO MEMBER "SPEAK"
cout << "Meow!" << endl;
}
解决方案
void::speak(); //THE GLOBAL SCOPE HAS NO SPEAK
它将这解释为void ::speak()
引导标识符(名称)::
向 C++ 指示的位置,“查看所有名称的全局范围”。 ::
是“范围解析运算符”
在头文件中,您应该只使用void speak();
它,因为 C++ 在您的类声明中看到它,因此知道它是类的一部分。
推荐阅读
- c++ - 创建 std::vector 时,“结果类型必须可以从输入范围的值类型构造”
- android - 如何在 webView 中使用私有 url?
- ios - 使用 UNLocationNotificationTrigger
- mysql - Mariadb 服务器启动失败(code=killed)
- xcode - Xcodebuild:找不到与提供的目标说明符匹配的目标
- c++ - C++ 内核的 Jupyter 笔记本错误 [cling]
- powershell - 为什么 powershell 正则表达式不能与 \n 一起使用?
- android - 如何将类实例作为参数提供给 Kotlin 函数
- c++ - 您如何编码将不同的可执行文件合并到一个窗口框架中?像浏览器一样?
- python - 熊猫将数据框与条件合并