一个unresolved external的问题

acqy 2006-08-01 10:32:48
我的代码如下:
// ------------ test.h
#ifndef __TEST_H
#define __TEST_H

#ifdef __cplusplus
extern "C" {
#endif

class Test
{
protected:
unsigned short mp_port;
public:
virtual unsigned short GetPort();
virtual void SetPort(unsigned short port);
}

#ifdef __cplusplus
}
#endif

#endif

// ------------- test.cpp
#include "test.h"
unsigned short Test::GetPort()
{
return mp_port;
}

void Test::SetPort (unsigned short port)
{
mp_port = port;
}

现在的问题是:链接后仅在SetPort函数上出现unresolved external的错误,而GetPort函数却没有问题。
如果将SetPort函数更名为其它的名称,例如FF或者任何名称,就可以编译通过
如果将SetPort的实现搬到.h文件中,同样也可以编译通过。
请问高手,这是什么原因呢?
...全文
94 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
acqy 2006-08-01
嗯。类后面少个;,是我少打了,源代码中没有这个问题。
我把virtual去掉再编译就通过了。这是为什么呢?
  • 打赏
  • 举报
回复
cleverwyq 2006-08-01
除了类的声明结尾少了个";"
  • 打赏
  • 举报
回复
cleverwyq 2006-08-01
没错阿
  • 打赏
  • 举报
回复
snowbirdfly 2006-08-01
virtual去掉看看可不可以~~
  • 打赏
  • 举报
回复
syy64 2006-08-01
可能头文件和实现部分有不一样的字符,拷一遍试试。
  • 打赏
  • 举报
回复
发帖
VC/MFC

1.6w+

社区成员

VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
帖子事件
创建了帖子
2006-08-01 10:32
社区公告

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