定义一个C函数,如下
//.h文件
namespace Test
{
class bird
{
public:
void birdFly()
{
std::cout << "bird fly" << std::endl;
}
};
void birdDo(bird &bd)
{
bd.birdFly();
}
}
//.cpp文件(为空)
#include "ADT.h"
//main.cpp
#include <iostream>
#include "ADT.h"
int main(int argc, char* argv[])
{
Test::bird mb;
Test::birdDo(mb);
return 0;
}
这样会报错:
error: multiple definition of `Test::birdDo(Test::bird&)'
error: ld returned 1 exit status
修改:
1. 去掉.cpp文件,全部实现都写在.h文件中
2. 将birdDo的实现放在.cpp中,不要放在namespace里面,如下:
//.h文件
namespace Test
{
class bird
{
public:
void birdFly()
{
std::cout << "bird fly" << std::endl;
}
};
void birdDo(bird &bd);
}
//.cpp文件
#include "ADT.h"
namespace Test
{
void birdDo(bird &bd)
{
bd.birdFly();
}
}
//main.cpp
#include <iostream>
#include "ADT.h"
int main(int argc, char* argv[])
{
Test::bird mb;
Test::birdDo(mb);
return 0;
}