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

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条)

报告相同问题?

悬赏问题

  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 怎么在stm32门禁成品上增加记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号