函数Interface::Interface(int)的未定义引用

undefined reference to function Interface::Interface(int)

本文关键字:Interface 未定义 引用 int 函数      更新时间:2023-10-16

我是c++中代理类概念的新手,当我尝试一个程序时,我得到了未定义的函数引用等错误。我不知道程序哪里出错了,请帮我改正一下。

undefined reference to `Interface::Interface(int)'
undefined reference to `Interface::getValue() const'
undefined reference to `Interface::setVale(int)'
undefined reference to `Interface::~Interface()'

代码如下

Implementation.h

#ifndef IMPLEMENTATION_H_INCLUDED
#define IMPLEMENTATION_H_INCLUDED
class Implementation
{
public:
    Implementation(int v):value (v){}
void setValue(int v)
{
    value=v;
}
int getValue()const{
    return value;
}
private:
    int value;
};
 #endif // IMPLEMENTATION_H_INCLUDED

Interface.h

    #ifndef INTERFACE_H_INCLUDED
    #define INTERFACE_H_INCLUDED
    class Implementation;
    class Interface
    {
        private:
        Implementation *ptr;
    public:
        Interface(int);
        void setValue(int);
        int getValue() const;
        ~Interface();
    };
    #endif // INTERFACE_H_INCLUDED

Interface.cpp

#include<iostream>
#include"Interface.h"
#include"Implementation.h"
using namespace std;
Interface::Interface(int v):ptr(new Implementation(int v))
{
}
void Interface::setValue(int v)
{
    ptr->setValue(v);
}
int Interface::getValue()const
{
    return ptr->getValue();
}
Interface::~Interface()
{
    delete ptr;
}

,这是main函数MainFunction.cpp

#include<iostream>
#include "Interface.h"
using namespace std;
int main()
{
    Interface i(2);
    cout<<"Interface Contains:"<<i.getValue()<<"before setValue"<<endl;
    i.setValue(10);
    cout<<"Interface contains:"<<i.getValue()<<"after setValue"<<endl;
    return 0;
}

使用命令g++ MainFunction.cpp Interface.cpp进行编译,并且接口构造函数的定义应该是Interface::Interface(int v):ptr(new Implementation(v))