什么是构造函数定义错误的修复?

时间:2014-11-18 21:50:04

标签: c++ oop constructor g++

所以我有一个班级:

#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()
            ^

2 个答案:

答案 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