C++ 在 header 中声明一个 const 函数并在 .cpp 中实现它
C++ declaring a const function in header and implementing it in .cpp
我有以下 header:
#include <string>
using namespace std;
enum COLOR {Green, Blue, White, Black, Brown};
class Animal{
private:
string _name;
COLOR _color;
public:
Animal();
~Animal();
void speak() const;
void move() const;
} ;
以及以下 .cpp 实现:
#include <iostream>
#include <string>
#include "Animal.h"
Animal::Animal(): _name("unknown")
{
cout << "constructing Animal object" << endl;
};
Animal::~Animal()
{
cout << "destructing Animal object" << endl;
}
void Animal::speak()
{
cout << "Animal speaks" << endl;
}
void Animal:: move(){};
但是,speak() 和 move() 函数给我一个错误:“没有声明匹配 Animal::speak()”。如果我删除声明尾部的 'const' ,编译就没有问题。 如何在 .cpp 文件中正确实现 const 函数?
你忘了在实现中加入const
。
将您的代码更改为:
void Animal::speak() const
{
cout << "Animal speaks" << endl;
}
void Animal::move() const {};
我有以下 header:
#include <string>
using namespace std;
enum COLOR {Green, Blue, White, Black, Brown};
class Animal{
private:
string _name;
COLOR _color;
public:
Animal();
~Animal();
void speak() const;
void move() const;
} ;
以及以下 .cpp 实现:
#include <iostream>
#include <string>
#include "Animal.h"
Animal::Animal(): _name("unknown")
{
cout << "constructing Animal object" << endl;
};
Animal::~Animal()
{
cout << "destructing Animal object" << endl;
}
void Animal::speak()
{
cout << "Animal speaks" << endl;
}
void Animal:: move(){};
但是,speak() 和 move() 函数给我一个错误:“没有声明匹配 Animal::speak()”。如果我删除声明尾部的 'const' ,编译就没有问题。 如何在 .cpp 文件中正确实现 const 函数?
你忘了在实现中加入const
。
将您的代码更改为:
void Animal::speak() const
{
cout << "Animal speaks" << endl;
}
void Animal::move() const {};