iceberg2271 2016-05-25 11:52 采纳率: 100%
浏览 2658
已采纳

C++ Error LNK2005(不知道哪儿重复定义了)

代码:
#include
#include
#include
#include "testcpp.cpp"
int main()
{
aaa t;
t.ChangeK(&t);
t.PutK(&t);
system("pause");
return 0;

}
testcpp.cpp
#include
using namespace std;
typedef struct aaa{
int k = 0;
void ChangeK(aaa *b);
void PutK(aaa *b);
}aaa;

void aaa::ChangeK(aaa *b){ int c = 0; cin >> c; b->k = c; }
void aaa::PutK(aaa *b){ cout << b->k; }

错误是我多次定义了这个ChangeK和PutK函数、、、、已在OBJ里存在了。。。

  • 写回答

3条回答 默认 最新

  • 小灸舞 2016-05-25 12:23
    关注

    将函数的声明,类型的定义放在.h头文件
    将函数的实现放在.cpp源文件中,你直接include源文件肯定报重定义的错误
    分成三个文件:
    1.testcpp.h

     #ifndef TESTCPP_H
    #define TESTCPP_H
    
    #include<iostream>
    using namespace std;
    typedef  struct aaa{
        int k;
        void ChangeK(aaa *b);
        void PutK(aaa *b);
    }aaa;
    
    #endif
    

    2.testcpp.cpp

     #include"testcpp.h"
    void aaa::ChangeK(aaa *b)
    {
        int c = 0; 
        cin >> c; 
        b->k = c; 
    }
    void aaa::PutK(aaa *b)
    {
        cout << b->k;
    }
    

    3.main.cpp

     #include<fstream>
    #include<string>
    #include<cmath>
    #include "testcpp.h"
    int main()
    {
        aaa t;
        t.ChangeK(&t);
        t.PutK(&t);
        system("pause");
        return 0;
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器