vc2008中 fatal error LNK1169: 找到一个或多个多重定义的符号

具体情况是这样的我的程序里有class.h(我自己的文件)stdafx.htargetver.hstdafx.cpptest.cpp(我自己的文件)class.h中有#p... 具体情况是这样的
我的程序里有
class.h(我自己的文件) stdafx.h targetver.h stdafx.cpp test.cpp(我自己的文件)

class.h中有
#pragma once
class num
{
private:
int k;
public:
void show();
void get();
};
void num::show()
{
cout<<k;
}
void num::get()
{
cin>>k;
}

stdafx.h里面有
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
#include <iostream>
using namespace std;
#include "class.h"

targetver.h里面有
#pragma once
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600
#endif

stdafx.cpp里面有
#include "stdafx.h"

test.cpp里面有
#include "stdafx.h"
int main()
{
num i;
i.get();
return 0;
}

编译时发现可创建num类对象i,就是不能使用成员函数就是"i.get()"报错,报错为
fatal error LNK1169: 找到一个或多个多重定义的符号
只要不用成员函数,就可以通过

百度知道把我的正常提问删了 我只好换一个号重新提问了 要是以前有回答过的谢谢了
展开
 我来答
百度网友34127f1
2011-01-28 · TA获得超过748个赞
知道小有建树答主
回答量:416
采纳率:0%
帮助的人:380万
展开全部
我昨天就答过了。。。
你的两个cpp,也就是stdafx.cpp和test.cpp里都去编译类的实现了,也就是这段:
void num::show()
{
cout<<k;
}
void num::get()
{
cin>>k;
}
所以在链接的时候会报错多重定义。
一般习惯上把类的声明写在头文件里,实现写在cpp里
starfar1983
2011-01-28 · TA获得超过2258个赞
知道小有建树答主
回答量:692
采纳率:0%
帮助的人:1040万
展开全部
class.h里,函数定义部分改成:
inline void num::show() // 前面加inline
{
cout<<k;
}
inline void num::get() // 前面加inline
{
cin>>k;
}

另外个办法是:不加inline,但是把这两个函数实现移动到test.cpp文件里(或者新添加一个class.cpp)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式