帮看看出错!为什么?

alphagm 2009-08-01 12:55:57
1>TableView.obj : error LNK2005: "private: static wchar_t const * const CTabPresentAccessor::s_strDefaultStr" (?s_strDefaultStr@CTabPresentAccessor@@0PB_WB) 已经在 TableDoc.obj 中定义
1>TableView.obj : error LNK2005: "private: static wchar_t const * const CTabProfessionAccessor::s_strDefaultStr" (?s_strDefaultStr@CTabProfessionAccessor@@0PB_WB) 已经在 TableDoc.obj 中定义
1>TableView.obj : error LNK2005: "private: static wchar_t const * const CTabStudyTypeAccessor::s_strDefaultStr" (?s_strDefaultStr@CTabStudyTypeAccessor@@0PB_WB) 已经在 TableDoc.obj 中定义
1>TableView.obj : error LNK2005: "private: static wchar_t const * const CTabDepTypeAccessor::s_strDefaultStr" (?s_strDefaultStr@CTabDepTypeAccessor@@0PB_WB) 已经在 TableDoc.obj 中定义
...全文
58 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
alphagm 2009-08-01
  • 打赏
  • 举报
回复
谢谢楼上的各为热心朋友!
搞定了!
原因是我把类的定义和实现写在同一个文件中了!并且类中使用了static 变量!把static 变量移到独立的实现文件就行了!
alphagm 2009-08-01
  • 打赏
  • 举报
回复
#pragma once
也加了!就是不行!
alphagm 2009-08-01
  • 打赏
  • 举报
回复
#8楼的那个办法我试过了!意思是先申明:class A;
也不行!
的确是和static有关!我就不懂这个static怎么找了这么多麻烦!
zyq1600356618 2009-08-01
  • 打赏
  • 举报
回复
还有, 好像和static有关系, 这个东西很烦人,本人不太喜欢...
gg606 2009-08-01
  • 打赏
  • 举报
回复
如7楼所说,看看CTabDepTypeAccessor类的头文件,如果没有 #pragma once 的话加上
副组长 2009-08-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 alphagm 的回复:]
#2楼的,我也知道是这个理,可我怎么改都不成啊!
[/Quote]
可以#ifndef的方法,通知编译程序如果已经包含了就不要再包含了,也可以头文件顶部加#pragma once这个就是为了防止头文件多次包含。不过我自己喜欢这样,就是严格限制在头文件顶部写#include,只写在cpp文件里面。可能你会说要在头文件里面用别的东西怎么办啊。其实这个可以前向声明。比如:
a.h 文件里面
class A
{
...
};
b.h 文件里面
#include “a.h”
class B
{
A a;
...
};

这不就是头文件包含头文件了吗?尽量避免这个,你可以这样
b.h 文件里面
class A;
class B
{
A * m_pA;
...
}
然后在b.cpp文件里面
#include “a.h”
...
m_pA = new A;
...

反正我是这么要求,好处多多!




zyq1600356618 2009-08-01
  • 打赏
  • 举报
回复
头文件顶部加

#pragma once
alphagm 2009-08-01
  • 打赏
  • 举报
回复
#2楼的,我也知道是这个理,可我怎么改都不成啊!
alphagm 2009-08-01
  • 打赏
  • 举报
回复
#3楼的,不行呀!我试过,每个头文件都加了那个的比如
#ifndef __TABLE_DOC_H__
#define __TABLE_DOC_H__

.....


#endif // __TABLE_DOC_H__
zqlong_sunday 2009-08-01
  • 打赏
  • 举报
回复
头文件的写法有问题
doomgnu 2009-08-01
  • 打赏
  • 举报
回复
加 以下定义 解决
#ifndef _xxx_xxxx_H_
#define _xxx_xxxx_H_

代码。。。。。。。。

#endif
副组长 2009-08-01
  • 打赏
  • 举报
回复
头文件里包含了头文件,然后又被包含了。
gg606 2009-08-01
  • 打赏
  • 举报
回复
重复定义呀!

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧