C++ .h文件中进行类函数定义,会造LNK2005的原因是什么?

Peter_1989 发布于 2014/09/21 10:37
阅读 901
收藏 1

如题,我在一个类的头文件中声明并定义了类的构造函数和析构函数,结果编译的时候出现LNK2005连接问题,后来我把定义移至相应的cpp文件,LNK问题就没有了,我想知道原因是啥?.h中已经使用#ifndef.


加载中
0
月落苍穹
月落苍穹

引用来自“月落苍穹”的评论

把ModalLiteral::去掉
回复 @Peter_1989 : 不好意思你的图片我看错了,你的定义根本就没有放到类里面去,这样的话在多个cpp文件中调用就存在重复定义。
正确的做法是声明和定义直接合并,像这样:
namespace ESGROUNDER {
    class ModalLiteral: public PredicateLiteral {
    public:
        ModalLiteral(ModalRange* range, PredicateLiteral* pl){
            //在这里直接实现
        }

        ~ModalLiteral(){
            //这里直接实现
        }
    
    private:
        ModalRange* range_;
        PredicateLiteral* literal_;
    };
};
Peter_1989
Peter_1989
明白了。这是vs的自动补全造成的。。。。。⊙﹏⊙b汗
0
月落苍穹
月落苍穹
把ModalLiteral::去掉
Peter_1989
Peter_1989
为什么?
0
Force武装卫队
Force武装卫队
放在类外可以写个class.cpp
返回顶部
顶部