zoukankan      html  css  js  c++  java
  • C++ link2005 error 错误 解决方法汇总(一般重复定义,如果都是不就是 函数定义和实现没有分离) 拂晓风起

    一般都是重复定义。

    可以按照VS给出的信息去找相关的变量或者宏定义,还有函数。

    这里需要注意include,不要重复include,不要重复定义宏。

    但上述这些,都是很好理解的……

    如果大家按照上边说的检查了,还是百思不得其解,那么就看看关于类的函数定义和实现分离的问题吧。

    一个兄弟的文章方法类似:http://blog.csdn.net/pang040328/archive/2009/07/07/4328270.aspx(不过说得很简单)

    大家留意编译器出现的错误,这种情况一般都是类的函数定义重复。但只有一处定义了,为什么呢?

    一般这种情况出现,是因为在h文件中,直接写了类函数的定义,虽然定义不在类中,已经分离出类之外,但还在.h文件中。

    解决方法很简单,就把那几个函数放到对应的cpp中,如果没有就建一个。

    我的例子:

    Connection.h是一个类,其中四个函数定义在类之外,但还在h文件中。

    SocketManager是另外一个类,函数实现分离到cpp中。在SocketManager.h引用Connection.h

    然后在main那个cpp中,引用SocketManager.h

    结果,报错了,正好就是那4个函数。

    Connection代码:

    1 //class connection
    2  class Connection
    3 {
    4  public:
    5 Connection(){
    6  /////
    7   }
    8
    9 ~Connection(){
    10  /////
    11   }
    12
    13 //make connect-socket
    14   bool makeConnect(const string &host, const string &service, const string &protocal);
    15 bool makeConnect(){
    16 return makeConnect(host, service, protocal_type);
    17 }
    18 //make passive-socket
    19   bool makePassive(const string &service, const string &transport, const int qlen);
    20 bool makePassive(){
    21 return makePassive(service, protocal_type, qlen);
    22 }
    23
    24 //get protocal
    25   string getProtocal(){ return protocal_type; }
    26
    27 //get socket type
    28   SOCKET_TYPE getSocketType(){ return sock_type; }
    29
    30 //get socket
    31 SOCKET getSocket(){ return sock; }
    32
    33 string getHost(){ return host; }
    34 string getService(){ return service; }
    35 string getPort(){ return service; }
    36 int getQueueLength(){ return qlen; }
    37
    38 protected:
    39
    40 private:
    41 SOCKET passivesock(const string &service, const string &transport, const int qlen);
    42 SOCKET connectsock(const string &host, const string &service, const string &transport );
    43
    44 private:
    45 SOCKET sock;
    46 SOCKET_TYPE sock_type;
    47 string protocal_type;
    48 string host;
    49 string service;
    50 int qlen;
    51 u_short portbase;
    52 };
    53
    54 SOCKET Connection::passivesock(const string &serv, const string &tp, const int qlen)
    55 {
    56 ////
    57 }
    58
    59 SOCKET Connection::connectsock(const string &h, const string &serv, const string &tp)
    60 {
    61 //////
    62 }
    63 bool Connection::makePassive(const string &service, const string &transport, const int qlen){
    64 //////
    65 }
    66
    67 bool Connection::makeConnect(const string &host, const string &service, const string &protocal){
    68 ///////
    69 }
    kenkofox@qq.com https://github.com/kenkozheng 欢迎投简历给我,一线大厂工作机会
  • 相关阅读:
    Android开发效率—Eclipse快捷键
    Android学习笔记之AndroidManifest.xml文件解析
    Android开发环境的安装 Eclipse
    运用CodeSmith Studio实现C#项目构架
    使用C#开发ActiveX控件(新) 转 http://www.cnblogs.com/yilin/p/csharp-activex.html
    C# winFrom 制作、打包、签名、发布Activex全过程
    C# Server.MapPath()
    PowerDesigner导出表到word
    powerdesigner 15 如何导出sql schema
    PowerDesigner15使用时的十五个问题
  • 原文地址:https://www.cnblogs.com/kenkofox/p/1720961.html
Copyright © 2011-2022 走看看