所以我有一个班级:
#include "Cool.h"
#include <iostream>
Cool::Cool()
{
//ctor
}
int getVar()
{
int pop = 22;
return pop;
}
和头文件:
#ifndef COOL_H
#define COOL_H
class Cool
{
public:
Cool();
int getVar();
};
#endif
但是当我编译时,我收到一个错误
错误:隐式声明&#39; Cool :: Cool()&#39;
的定义
编辑: 不知道它是否会有所帮助,但我也有一个makefile:
program: main.o cool.o
g++ -o program main.o cool.o
cool.o: Cool.cpp Cool.h
g++ -c -o cool.o Cool.cpp
main.o: main.cpp cool.o
g++ main.cpp
编辑2:完整错误消息:
Cool.cpp:4:12: error: definition of implicitly-declared ‘Cool::Cool()’
Cool::Cool()
^
答案 0 :(得分:1)
此:
cool.o: Cool.cpp Cool.h
g++ Cool.cpp
应该是:
cool.o: Cool.cpp Cool.h
g++ -c -o cool.o Cool.cpp
main.o:
:
main.o: main.cpp Cool.h
g++ -c -o main.o main.cpp
您拥有与大写和小写相同的文件,这非常令人困惑。将所有内容重命名为小写后,问题是否仍然存在?
答案 1 :(得分:0)
解决了!我把它添加到makefile:
在main.o下:
g++ -c -o main.o main.cpp