我遇到了这个非常简单的问题,我收到此错误消息:
在尝试定义body 时,成员函数可能不会在其类外重新声明
其他人在此之前已经拥有它,但它主要是对成员函数的实际重新声明(即在写int ClassName::methodName()
时写int something = ClassName::methodName()
)但奇怪的是,这不是我的问题所在
我的问题是:
//avr_helper.h
#pragma once
#include <avr/io.h>
enum input_type {INPUT, OUTPUT};
enum write_type {HIGH, LOW};
class register_b
{
static void assign(long register_pin, input_type type);
static void write(long pin, write_type type);
}
//avr_helper.cpp
#include "avr_helper.h"
void register_b::assign(long register_pin, input_type type) { // this works fine
switch(type) {
case INPUT:
DDRB &= ~(1<<register_pin);
break;
case OUTPUT:
DDRB |= (1<<register_pin);
break;
}
void register_b::write(long pin, write_type type) { // this gives the error mentioned in the title
switch(type) {
case HIGH:
PORTB &= ~(1<<pin);
break;
case LOW:
PORTB |= (1<<pin);
break;
}
之前定义成员函数从未让我失望过,为什么我现在得到错误?
答案 0 :(得分:3)
你在switch
成员函数定义的assign
语句中缺少一个紧密的大括号。我认为这会使解析器瘫痪,从而导致错误。你可以在这里看到:
void register_b::assign(long register_pin, input_type type) { // this works fine
switch(type) {
case INPUT:
DDRB &= ~(1<<register_pin);
break;
case OUTPUT:
DDRB |= (1<<register_pin);
break;
// <-- Missing } here?
}
尝试重新添加}
。
希望这有帮助!