【发布时间】:2016-07-18 17:14:30
【问题描述】:
**问题已解决。看来我错误地创建了一个额外的标题,并且由于我删除了他,所以它起作用了。 **
所以我试图了解类和标题以及如何使它们一起工作。
我正在关注在线教程,但我的代码似乎出了点问题。
问题是当我尝试运行main 时,它给了我这个错误:
Cat::speak() 和所有其他函数的多重定义。
main.cpp
#include <iostream>
#include "class.h"
using namespace std;
int main()
{
Cat jim;
jim.makehappy();
jim.speak();
Cat george;
george.makesad();
george.speak();
return 0;
}
class.cpp
#include <iostream>
#include "class.h"
using namespace std;
void Cat::speak()
{
if (happy)
{
cout << "meoww" << endl;
}
else
{
cout << "sssss" << endl;
}
}
void Cat::makehappy()
{
happy = true;
}
void Cat::makesad()
{
happy = false;
}
class.h
#ifndef CLASS_H_INCLUDED
#define CLASS_H_INCLUDED
class Cat
{
private:
bool happy;
public:
void makehappy();
void makesad();
void speak();
};
#endif // CLASS_H_INCLUDED
【问题讨论】:
-
你是如何编译你的代码的?或者更确切地说是链接,看起来您在链接期间不止一次使用 class.cpp。
-
但是`错误:多重定义`并不表示链接器问题..
-
我试过你的代码,编译或链接没有错误。你建设得怎么样了?
-
im 使用 gnu 编译器和代码块。
-
你能得到一个构建控制台并发布一个完整构建的内容吗?