C ++ Cygwin对构造函数的未定义引用

时间:2018-01-25 15:34:00

标签: c++ cygwin

在尝试构建我的小测试时遇到错误我不明白为什么它不起作用。我正在使用Eclipse和Cygwin。 Header和Source文件被分成不同的文件夹,我也将它们放入Cygwin包含的文件夹中。

控制台日志

16:05:41 **** Incremental Build of configuration Debug for project Testarea ****
make all 
Building target: Testarea.exe
Invoking: Cygwin C++ Linker
g++  -o "Testarea.exe"  ./Source/lint.o ./Source/tester.o   
./Source/tester.o: In function `main':
/cygdrive/d/CWork/Testarea/Debug/../Source/tester.cpp:4: undefined reference to `lint::lint()'
/cygdrive/d/CWork/Testarea/Debug/../Source/tester.cpp:4:(.text+0x20): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `lint::lint()'
collect2: error: ld returned 1 exit status
make: *** [makefile:47: Testarea.exe] Error 1

16:05:41 Build Finished (took 348ms)

tester.cpp

#include <iostream>
#include <lint.h>
int main(){
    lint* a = new lint();
    std::cout << "hallo";
    return 0;
}

lint.cpp

class lint{
    private:
        int* a;
    public:
        lint(){
            a = new int();
        };
        lint(int b){
            a = new int(b);
        };
        lint(lint& b){
            a = new int(b.value());
        };
        int value(){
            return *a;
        };
};

lint.h

#ifndef HEADER_LINT_H_
#define HEADER_LINT_H_
class lint{
    public:
        lint();
        lint(int b);
        lint(lint& b);
        int value();
};
#endif

1 个答案:

答案 0 :(得分:1)

你的问题是你在那里上过2节课。一个名为lint,另一个名为lint,但仅在lint.cpp文件中可用。

实施完成:

:after

等等。