又一个"未找到成员声明"
Yet another 'member declaration not found'
我已经有
一段时间没有写过任何C++了,我只是想做一个简单的程序来复制不同类型的时钟来刷新我的记忆。
我从编写一个Clock
超类开始,并为除构造函数/析构函数之外的每个方法获取了Member declaration not found
。我认为这是某个地方的小错误,但我无法发现任何东西。
时钟.h
/*
* Clock.h
*/
#ifndef CLOCK_H_
#define CLOCK_H_
class Clock {
private:
int seconds;
int minutes;
int hours;
public:
Clock();
Clock(int, int, int);
virtual ~Clock();
virtual void tick() = 0;
void setTime(int, int, int);
void print();
};
#endif /* CLOCK_H_ */
时钟.cpp
/*
* Clock.cpp
*/
#include "Clock.h"
#include <iostream>
Clock::Clock() {
seconds = 0;
minutes = 0;
hours = 0;
}
Clock::Clock(int secs, int mins, int hrs) :
seconds(secs), minutes(mins), hours(hrs) {
}
Clock::~Clock() {
// TODO Auto-generated destructor stub
}
Clock::setTime(int secs, int mins, int hrs) {
seconds = secs;
minutes = mins;
hours = hrs;
}
Clock::print() {
std::cout << hours << ":" << minutes << ":" << seconds << std::endl;
}
我怀疑错误消息有点长,这将有助于整体查看它。
话虽如此,错误可能是由于您的定义应该是:
void Clock::setTime(int secs, int mins, int hrs) { /* ... */ }
而不是:
Clock::setTime(int secs, int mins, int hrs) { /* ... */ }
也就是说,在您的情况下缺少返回类型。
这同样适用于print
。
实现文件 (Clock.cpp( 中缺少以下方法的返回类型。
Clock::setTime(int secs, int mins, int hrs) {
seconds = secs;
minutes = mins;
hours = hrs;
}
Clock::print() {
std::cout << hours << ":" << minutes << ":" << seconds << std::endl;
}
应该是
void Clock::setTime(int secs, int mins, int hrs) {
seconds = secs;
minutes = mins;
hours = hrs;
}
void Clock::print() {
std::cout << hours << ":" << minutes << ":" << seconds << std::endl;
}
相关文章:
- 使用静态成员声明类时遇到问题
- 错误 C2059:语法错误:从结构成员声明'constant'
- std::d eclare_if 或其他在编译时丢弃成员声明的假设方法
- C++ 成员声明中不允许使用限定名称
- 又一个"未找到成员声明"
- auto f = bind(dist<>,gen) 在成员声明C++失败。未被识别为函数
- C++错误:成员声明末尾的预期“;”
- 静态成员声明 c++11
- 如何将成员声明为指向外部"C"函数的指针?
- C++11 - 将非静态数据成员声明为 'auto'
- 类成员声明的快捷方式
- libclang 获取成员声明
- 将成员声明与enable_if一起使用
- 找不到成员声明
- C++错误:找不到成员声明
- 找不到c++成员声明
- 成员声明顺序在类中如果彼此依赖,则为最优解
- 将struct的成员声明为uint32_t时额外的字节
- 为什么类的大小取决于成员声明的顺序?以及如何
- 是成员声明`decltype(name)name;`在第一个名称引用封闭作用域的本地结构中允许