定义第二个静态成员函数的异常错误消息?

时间:2014-01-03 23:53:15

标签: c++ class methods member-functions

我遇到了这个非常简单的问题,我收到此错误消息:

  在尝试定义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;
    }

之前定义成员函数从未让我失望过,为什么我现在得到错误?

1 个答案:

答案 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?
}

尝试重新添加}

希望这有帮助!