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

具体情况是这样的
我的程序里有
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: 找到一个或多个多重定义的符号
只要不用成员函数,就可以通过

百度知道把我的正常提问删了 我只好换一个号重新提问了 要是以前有回答过的谢谢了

我昨天就答过了。。。
你的两个cpp,也就是stdafx.cpp和test.cpp里都去编译类的实现了,也就是这段:
void num::show()
{
cout<<k;
}
void num::get()
{
cin>>k;
}
所以在链接的时候会报错多重定义。
一般习惯上把类的声明写在头文件里,实现写在cpp里
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-28
class.h里,函数定义部分改成:
inline void num::show() // 前面加inline
{
cout<<k;
}
inline void num::get() // 前面加inline
{
cin>>k;
}

另外个办法是:不加inline,但是把这两个函数实现移动到test.cpp文件里(或者新添加一个class.cpp)。

vc2008中 fatal error LNK1169: 找到一个或多个多重定义的符号
你的两个cpp,也就是stdafx.cpp和test.cpp里都去编译类的实现了,也就是这段:void num::show(){ cout<<k;} void num::get(){ cin>>k;} 所以在链接的时候会报错多重定义。一般习惯上把类的声明写在头文件里,实现写在cpp里

fatal error LNK1169: 找到一个或多个多重定义的符号
codoblock运行可以,撸主尝试重启下VC再运行

fatal error LNK1169: 找到一个或多个多重定义的符号\\\\是怎么回事?
把getch();去掉就可以了,如果要无限地输入整数并判断只要加个while(1)就可以了。试试 include<stdio.h> include<conio.h> int main(){ while(1){ int x;printf("请输入一个正整数;");scanf("%d",&x);if(x%6==0)printf("yes!\\n");else printf("no!\\n");} return 0;} ...

...error LNK1169: 找到一个或多个多重定义的符号”是怎么回事??_百度...
两个for循环里的i的值不一样啊 一个是i=2;一个是i=0; 也就是整型变量i有两个赋值 当然出错误了

c语言fatal error LNK1169: one or more multiply defined symbols fou...
one or more multiply defined symbols found 这句话指的是有多个符号被重定义了,有可能是你的代码问题,也有可能是工程建的有问题。

...error LNK1169: 找到一个或多个多重定义的符号
头文件不得包含变量定义和函数体,否则被包含一次,这些变量、函数就被重新定义,从而导致这个问题。把变量定义放到一个源文件中,然后在头文件中写成 extern bool bGolbal ;

...error LNK1169: 找到一个或多个多重定义的符号 是什么意思,求大神解 ...
把你。h文件里的方法写声明写到类里面,不然你的.cpp里的StrTonInt()函数就和.h函数冲突了

...error LNK1169: 找到一个或多个多重定义的符号 1>。。。怎么改错啊...
vc编译器吗?将工程目录下面的debug目录删除然后重新编译 打开任务管理器看看里面有没有o。exe,有的话先用任务管理器关闭

vc2008控制台编程的问题,找到一个或多个多重定义的符号
包含cpp文件,或者在头文件定义函数必然会导致这个问题,因为对应的函数每次被包含一下,就等于被重复定义一次

找到一个或多个多重定义的符号 C++
不能在头文件.h里面定义全局变量,那样编译的时候两个cpp文件都会包含头文件里面定义的变量而冲突 全局变量可以在class.cpp里面定义:int map[3][3]={-1,-1,-1,-1,-1,-1,-1,-1,-1};然后main.cpp开头声明:extern int map[3][3]={-1,-1,-1,-1,-1,-1,-1,-1,-1};...

相似回答