求助!外部内容内部类获取外部类对象不到!

千里之行 始于足下精诚所至 金石为开
欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 4589 人关注过本帖
标题:求助!VS2005中 “无法解析的外部命令”问题
等 级:论坛游民
帖 子:76
专家分:61
结帖率:75%
&&已结贴√
&&问题点数:40&&回复次数:11&&&
求助!VS2005中 “无法解析的外部命令”问题
刚刚看了命名空间,就试用了一下,结果出现“无法解析的外部命令” 望解释一下
#ifndef _STACK_H_
#define _STACK_H_
namespace STACK
&&& const int maxsize=50;
&&& int UNDERFLOW=0;//下溢
&&& int OVERFLOW=0;//上溢
&&& template&class T&
&&& class stack
&&& private:
&&&&&&&&T *
&&&&&&&&//该栈的最大长度
&&& public:
&&&&&&&&stack(int num=maxsize);
&&&&&&&&~stack();
&&&&&&&&void push(T);
&&&&&&&&T pop();
&&&&&&&&T gettop();
&&&&&&&&int length();
&&&&&&&&bool isempty();
&&&&&&&&void print()
//stack.cpp
#include&iostream&
#include&stack.h&
template&class T&
STACK::stack&T&::stack(int num = maxsize)
&&& data=new T(num);
&&& index=0;
template&class T&
STACK::stack&T&::~stack()
&&& delete []
template&class T&
T STACK::stack&T&::gettop()
&&&&&&&&if(index==0)
&&&&&&&&&&&&throw UNDERFOLW;
&&&&&&&&return data[index];
&&& catch UNDERFLOW
&&&&&&&&cout&&&发生下溢&&&
template&class T&
void STACK::stack&T&::push(T t)
&&&&&&&&if(index==max)
&&&&&&&&&&&&throw OVERFLOW;
&&&&&&&&data[index];
&&&&&&&&++
&&& catch OVERFLOW
&&&&&&&&cout&&&发生上溢&&&
template&class T&
T STACK::stack&T&::pop()
&&&&&&&&if(index==0)
&&&&&&&&&&&&throw UNDERFLOW;
&&&&&&&&--
&&&&&&&&return data[index];
&&& catch UNDERFLOW
&&&&&&&&cout&&&发生下溢&&&
template&class T&
int STACK::stack&T&::length()
template&class T&
bool STACK::stack&T&::isempty()
&&& if(index==max)
template&class T&
void STACK::stack&T&::print() const
&&& int j=length();
&&& for(int i=0;i&j;++i)
&&&&&&&&cout&&data[i]&&' ';
&&& cout&&
//main.cpp
#include&iostream&
#include&stack.h&
void main()
&&& STACK::stack&int& intstack(10);
&&& STACK::stack&char& charstack(8);
&&& if(intstack.isempty()==true)
&&&&&&&&cout&&&Int stack is empty&&&
&&&&&&&&cout&&&Int stack isn't empty&&&
&&& for(int i=0;i&9;++i)
&&&&&&&&intstack.push(i);
&&& intstack.print();
&&& for(int i=0;i&5;++i)
&&&&&&&&ch='a'+i;
&&&&&&&&charstack.push(ch);
&&& charstack.print();
结果链接时出错:
1&------ 已启动生成: 项目: stack, 配置: Debug Win32 ------
1&正在编译...
1&main.cpp
1&正在链接...
1&main.obj : error LNK2005: &int STACK::UNDERFLOW& (?UNDERFLOW@STACK@@3HA) 已经在 stack.obj 中定义
1&main.obj : error LNK2005: &int STACK::OVERFLOW& (?OVERFLOW@STACK@@3HA) 已经在 stack.obj 中定义
1&main.obj : error LNK2019: 无法解析的外部符号 &public: __thiscall STACK::stack&int&::~stack&int&(void)& (??1?$stack@H@STACK@@QAE@XZ),该符号在函数 _main 中被引用
1&main.obj : error LNK2019: 无法解析的外部符号 &public: __thiscall STACK::stack&char&::~stack&char&(void)& (??1?$stack@D@STACK@@QAE@XZ),该符号在函数 _main 中被引用
1&main.obj : error LNK2019: 无法解析的外部符号 &public: void __thiscall STACK::stack&char&::print(void)const & (?print@?$stack@D@STACK@@QBEXXZ),该符号在函数 _main 中被引用
1&main.obj : error LNK2019: 无法解析的外部符号 &public: void __thiscall STACK::stack&char&::push(char)& (?push@?$stack@D@STACK@@QAEXD@Z),该符号在函数 _main 中被引用
1&main.obj : error LNK2019: 无法解析的外部符号 &public: void __thiscall STACK::stack&int&::print(void)const & (?print@?$stack@H@STACK@@QBEXXZ),该符号在函数 _main 中被引用
1&main.obj : error LNK2019: 无法解析的外部符号 &public: void __thiscall STACK::stack&int&::push(int)& (?push@?$stack@H@STACK@@QAEXH@Z),该符号在函数 _main 中被引用
1&main.obj : error LNK2019: 无法解析的外部符号 &public: bool __thiscall STACK::stack&int&::isempty(void)& (?isempty@?$stack@H@STACK@@QAE_NXZ),该符号在函数 _main 中被引用
1&main.obj : error LNK2019: 无法解析的外部符号 &public: __thiscall STACK::stack&char&::stack&char&(int)& (??0?$stack@D@STACK@@QAE@H@Z),该符号在函数 _main 中被引用
1&main.obj : error LNK2019: 无法解析的外部符号 &public: __thiscall STACK::stack&int&::stack&int&(int)& (??0?$stack@H@STACK@@QAE@H@Z),该符号在函数 _main 中被引用
1&F:\Users\Administrator\Documents\Visual Studio 2005\Projects\stack\Debug\stack.exe : fatal error LNK1120: 9 个无法解析的外部命令
1&生成日志保存在“file://f:\Users\Administrator\Documents\Visual Studio 2005\Projects\stack\Debug\BuildLog.htm”
1&stack - 12 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========
请问这是什么问题,如何解决啊?
搜索更多相关主题的帖子:
等 级:等待验证会员
帖 子:128
专家分:720
模板类的申明和定义不能跨两个文件,所有关于 你的 stack 类的声明和定义,包括函数定义,都必须放到 stack.h 文件里,跨文件都会出现编译问题,这个是编译器问题,但是,目前还没有哪个编译器支持模板类的申明和定义分离(跨文件)。
C++ 用无参数构造函数生成对象时候请勿在构造函数后添加无用的那一对括号,否则有可能会被当成函数声明而忽略,嗯,栈上构建的时候就是这样。
等 级:小飞侠
帖 子:765
专家分:2103
我用2010时也出现过这类错误
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
&&得分:10&
在main.cpp中,把stack.cpp也包含进去。
这样试试:#include&iostream&
#include&stack.h&
#include&stack.cpp&
using namespace
等 级:论坛游民
帖 子:76
专家分:61
回复 4楼 zhoufeng1988
修改之后,那个无法解析的外部命令没了
但有了重定义问题:
1&------ 已启动生成: 项目: stack, 配置: Debug Win32 ------
1&正在编译...
1&stack.cpp
1&Generating Code...
1&Compiling...
1&main.cpp
1&Generating Code...
1&正在链接...
1&stack.obj : error LNK2005: &int STACK::UNDERFLOW& (?UNDERFLOW@STACK@@3HA) 已经在 main.obj 中定义
1&stack.obj : error LNK2005: &int STACK::OVERFLOW& (?OVERFLOW@STACK@@3HA) 已经在 main.obj 中定义
1&F:\Users\Administrator\Documents\Visual Studio 2005\Projects\stack\Debug\stack.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
1&生成日志保存在“file://f:\Users\Administrator\Documents\Visual Studio 2005\Projects\stack\Debug\BuildLog.htm”
1&stack - 3 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========
在那部分加了#ifndef...也没用:程序代码:#ifndef _UNDERFLOW_
#define _UNDERFLOW_
&&& int UNDERFLOW=<font color=#;//下溢
#ifndef _OVERFLOW_
#define _OVERFLOW_
&&& int OVERFLOW=<font color=#;//上溢
这个该怎么办啊?
等 级:等待验证会员
帖 子:128
专家分:720
回复 5楼 紫凤双飞
都说过了,把stack.cpp 的内容放到 stack.h 里面去,stack类的所有信息都在一个文件就可以了
C++ 用无参数构造函数生成对象时候请勿在构造函数后添加无用的那一对括号,否则有可能会被当成函数声明而忽略,嗯,栈上构建的时候就是这样。
等 级:论坛游民
帖 子:76
专家分:61
回复 6楼 tisyang
不是,是可以跨文件的,就像4楼说的那样,而且之前看到一本书上提到的,所以才会尝试嘛
等 级:论坛游民
帖 子:76
专家分:61
回复 6楼 tisyang
而且现在是重定义的问题啊
等 级:等待验证会员
帖 子:128
专家分:720
以下是引用紫凤双飞在 15:26:14的发言:
不是,是可以跨文件的,就像4楼说的那样,而且之前看到一本书上提到的,所以才会尝试嘛
跨文件的在C++标准里是 export 关键字,但是貌似主流编译器都不支持这个关键字,好像是因为实现起来过于复杂。
具体可以看这篇文章和评论。
/converse/archive//9695.html
C++ 用无参数构造函数生成对象时候请勿在构造函数后添加无用的那一对括号,否则有可能会被当成函数声明而忽略,嗯,栈上构建的时候就是这样。
等 级:等待验证会员
帖 子:128
专家分:720
&&得分:30&
回复 8楼 紫凤双飞
重定义是因为你同时包含了 头文件和实现文件,其实就算你同时包含不出现任何问题的话,你的设计就有问题了。
将类的声明和定义分开放到两个文件的目的是将具体的实现隐藏,不暴露给外部用户。一般这样分开设计的类,用的时候只要包含头文件就可以了,如果类的声明没有变,但是定义发生了改变的话,引用该类的源文件不需要重新编译,只需要重新链接就可以了。
但是你这样的分开设计,必须包含实现文件的话,和本来放到一个文件有什么区别呢,不能隐藏细节。类的任何改变都还需要将源文件重新编译和链接。只是看起来分开了而已,实质上还是连在一起的。
C++ 用无参数构造函数生成对象时候请勿在构造函数后添加无用的那一对括号,否则有可能会被当成函数声明而忽略,嗯,栈上构建的时候就是这样。
版权所有,并保留所有权利。
Powered by , Processed in 0.025425 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved〖160415〗『求助』我就问问 这个读取外部储存内容的权限是_htc吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:389,273贴子:
〖160415〗『求助』我就问问 这个读取外部储存内容的权限是收藏
好的话剧,坚决不能错过,价格也很重要!
妹的 题目没显示完 这个权限到底是个嘛意思,求大神不吝赐教
就是允许软体对存储卡进行读取
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 excel获取外部数据 的文章

 

随机推荐