|
![]() | 作者: shuihan [shuihan]
![]() |
登录 |
在用VC++编程时插入了一个类老是有连接问题,请高人帮忙解决一下啊 --------------------Configuration: canvas - Win32 Debug-------------------- Linking... canvasFrame.obj : error LNK2005: "public: __thiscall BodyNode::BodyNode(void)" (??0BodyNode@@QAE@XZ) already defined in canvasApp.obj canvasFrame.obj : error LNK2005: "public: __thiscall BodyNode::BodyNode(class CPoint,struct BodyNode *,struct BodyNode *)" (??0BodyNode@@QAE@VCPoint@@PAU0@1@Z) already defined in canvasApp.obj canvasFrame.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CSnakeBody::~CSnakeBody(void)" (??1CSnakeBody@@UAE@XZ) canvasFrame.obj : error LNK2001: unresolved external symbol "public: __thiscall CSnakeBody::CSnakeBody(void)" (??0CSnakeBody@@QAE@XZ) Debug/canvas.exe : fatal error LNK1120: 2 unresolved externals Error executing link.exe. canvas.exe - 5 error(s), 0 warning(s) |
地主 发表时间: 04-02-06 22:13 |
![]() | 回复: TomyChen [quest] ![]() |
登录 |
好像是类模版?对不? 把函数做成内联函数应该行得通。 |
B1层 发表时间: 04-02-07 10:15 |
![]() | 回复: shuihan [shuihan] ![]() |
登录 |
不是啊斑竹 就是一个普通的类 加进去后连接就出问题了 编译没问题 再帮帮忙啊 谢谢 ![]() |
B2层 发表时间: 04-02-07 10:20 |
![]() | 回复: TomyChen [quest] ![]() |
登录 |
帖上代码看看吧... 连接错误,说是重复定义,看看是不是全局变量重复定义。 最好是看代码吧 |
B3层 发表时间: 04-02-07 12:03 |
![]() | 回复: shuihan [shuihan] ![]() |
登录 |
哦好的麻烦斑竹了啊 没有定义全局变量 头文件: // SnakeBody.h: interface for the CSnakeBody class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_SNAKEBODY_H__2E1CF707_7B8A_4098_8DF5_9D30051E128E__INCLUDED_) #define AFX_SNAKEBODY_H__2E1CF707_7B8A_4098_8DF5_9D30051E128E__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 //define snakenode struct BodyNode { CPoint nodeposition; BodyNode *back; BodyNode *next; //construct BodyNode(); BodyNode(CPoint pt,BodyNode *blink,BodyNode *nlink); }; BodyNode::BodyNode() {} BodyNode::BodyNode(CPoint pt,BodyNode *blink,BodyNode *nlink) { nodeposition=pt; back=blink; next=nlink; } class CSnakeBody { public: bool Find(CPoint x); void RemoveTail(); void AddHead(const CPoint &x); CSnakeBody(); virtual ~CSnakeBody(); private: BodyNode* tail; BodyNode* head; }; #endif // !defined(AFX_SNAKEBODY_H__2E1CF707_7B8A_4098_8DF5_9D30051E128E__INCLUDED_) // SnakeBody.cpp: implementation of the CSnakeBody class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "canvasr.h" #include "SnakeBody.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CSnakeBody::CSnakeBody() { head=tail=NULL; } CSnakeBody::~CSnakeBody() { } void CSnakeBody::AddHead(const CPoint &x) { if(head==NULL) { head=new BodyNode(x,NULL,NULL); tail=head; } else { BodyNode* newnode; newnode=new BodyNode(x,NULL,head); head->back=newnode; head=newnode; } } void CSnakeBody::RemoveTail() { tail=tail->back; delete tail->next; tail->next=NULL; } bool CSnakeBody::Find(CPoint x) { for(BodyNode* i=head;i!=NULL;i=i->next) { if(x==i->nodeposition) return true; } return false; } |
B4层 发表时间: 04-02-08 11:22 |
![]() | 回复: jhkdiy [jhkdiy] ![]() |
登录 |
程序有点像C语言里的链表数据结构,我是乱猜得,打搅了。 |
B5层 发表时间: 04-02-08 23:49 |
![]() | 回复: 286 [unique] ![]() |
登录 |
估计是你在写#include语句时位置放的不合适。 头文件与CPP文件本身没问题。 把#include "SnakeBody.h"语句放到合适的位置就行了。一般放到CPP文件名,而不要放到H文件头。或者直接放到stdafx.h中。 |
B6层 发表时间: 04-02-09 09:30 |
![]() | 回复: TomyChen [quest] ![]() |
登录 |
奇怪,用...VC直接建一个新类,可以通过编译,测试通过。 但是把类保存下来,放到其他工程中,就不可用。。。 楼上的方法也试过了,对了,VC SP5都打过补丁了。。。 我也想不明白 |
B7层 发表时间: 04-02-09 14:42 |
![]() | 回复: leonshoh [leonshoh] ![]() |
登录 |
知道了,你的是重复定义了,在H文件里面加一条预处理指令 #pragma once OK,就搞定了 |
B8层 发表时间: 04-02-11 13:02 |
![]() | 回复: TomyChen [quest] ![]() |
登录 |
#if !defined(AFX_SNAKEBODY_H__2E1CF707_7B8A_4098_8DF5_9D30051E128E__INCLUDED_) #define AFX_SNAKEBODY_H__2E1CF707_7B8A_4098_8DF5_9D30051E128E__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 这不已经有了吗... |
B9层 发表时间: 04-02-11 15:02 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号