为什么Xcode会给我“重新定义控制台”错误? 标题和cpp中的名称不应该相同吗?
以下是代码:
ui.cpp:
#include "ui.h"
class Console {
public:
void run() {
puts("Hello my friend!");
}
};
ui.h:
class Console {
public:
void run();
};
main.cpp中:
#include <iostream>
#include "ui.h"
int main(int argc, const char * argv[]) {
Console c;
c.run();
return 0;
}
答案 0 :(得分:3)
标题和cpp中的名称不应该相同吗?
不,.cpp文件应该具有实现,而不是声明。这看起来像是:
#include "ui.h"
void Console::run() {
puts("Hello my friend!");
}
请注意,您的.h文件中也可能include guards,以防止它们被多次包含。
答案 1 :(得分:2)
类在头文件中定义。 .cpp
应该包含函数的实现,而不是类定义。
ui.cpp应该是:
#include <stdio.h> /* for puts */
#include "ui.h"
void Console::run() {
puts("Hello my friend!");
}
如果您正在学习C ++,请尝试使用http://www.learncpp.com/等教程。
答案 2 :(得分:0)
因为你重新定义了它。字面上就在你的代码中。
要定义其成员函数之一,只需执行 ,而不重复类的定义:
#include "ui.h"
void Console::run()
{
puts("Hello my friend!");
}