由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问个C++的问题
相关主题
问个面试时候hash table的C++实现问题现在不会java,不会C#是不是很不好找工作了啊
攒人品,发几个面试题 C/C++Bloomerg 还没放弃我。 电话二面经过。
面试的时候可以用STL吗C++ Q35: sizeof() (B20_20)
请问怎么用Class实现Stack面经兼求祝福
C++里get array size的问题请教一个C++的题目,谢谢
stringstream 到底需要include哪个library再问一个C的malloc( )
我的悲惨经历告诉你碰上很熟的题怎么办implement malloc和free这题
test C# lib with developed by others in visual studio 2013 (转载)A家第一次电面(面经)
相关话题的讨论汇总
话题: 里面话题: 函数话题: include话题: cpp
进入JobHunting版参与讨论
1 (共1页)
r******l
发帖数: 10760
1
这里人气比CS版旺多了,而且大多是CS的,所以发在这里请教一下高人。
两个class,a和b。由于互相有指针指向对方,所以在b.h里面include了a.h,但是a.h
里面只在开头写了一句class b;而没有include b.h(a.cpp里面include了b.h)。以前
这样用了很久都没问题,但是最近碰到一个问题:
class a里面有几个函数的参数用到template,所以这几个函数的declaration和
implementation都放到了a.h里面,而这几个函数里面也用到了指向class b的指针(比
如p_b->func1();)。结果这样的程序在Windows上用Visual Studio 2010里面编译连接
都没问题,但是在Mac上用xcode编译就报错,说什么用到了incomplete type(Linux下
面似乎也报同样的错)。
应该是因为在a.h里面放了函数的implementation导致的。尝试将implementation拿到a
.cpp里面,结果又link出错。网上搜了一下发现这种用到template的函数,做常见的做
法就是把implementation也放到.h文件里。有人给了几种放到.cpp里的方法,但是本质
还是要让declaration和implementation在同一个文件里(比如同时include a.h和a.
cpp,或者在a.h末尾include a.cpp),所以还是会造成同样的错误(incomplete type)。
不知道这种情况有什么解决方法吗?Visual Studio既然能过,xcode能否有什么参数可
以build成功?
============
http://stackoverflow.com/questions/12924443/how-to-use-forward-
我贴了code在上面的网页,这样可能说得更清楚些。
l******n
发帖数: 1250
2
#ifndef
#define
#end
end
r******l
发帖数: 10760
3
能否说详细写?
你是说加上这个两个.h就可以互相引用了吗?实际是不行啊。

【在 l******n 的大作中提到】
: #ifndef
: #define
: #end
: end

l*********8
发帖数: 4642
4
为什么不能把那几个函数的实现从h文件移到cpp文件?


h
到a

【在 r******l 的大作中提到】
: 这里人气比CS版旺多了,而且大多是CS的,所以发在这里请教一下高人。
: 两个class,a和b。由于互相有指针指向对方,所以在b.h里面include了a.h,但是a.h
: 里面只在开头写了一句class b;而没有include b.h(a.cpp里面include了b.h)。以前
: 这样用了很久都没问题,但是最近碰到一个问题:
: class a里面有几个函数的参数用到template,所以这几个函数的declaration和
: implementation都放到了a.h里面,而这几个函数里面也用到了指向class b的指针(比
: 如p_b->func1();)。结果这样的程序在Windows上用Visual Studio 2010里面编译连接
: 都没问题,但是在Mac上用xcode编译就报错,说什么用到了incomplete type(Linux下
: 面似乎也报同样的错)。
: 应该是因为在a.h里面放了函数的implementation导致的。尝试将implementation拿到a

r******l
发帖数: 10760
5
放到cpp后link错误。网上查了一下,似乎用到template的函数都要放到.h文件里面?
当然,我对template知之甚少。我把sample code贴在原贴里了,谁能帮我把它修改一
下,使之能在Mac上编译通过么?多谢!

【在 l*********8 的大作中提到】
: 为什么不能把那几个函数的实现从h文件移到cpp文件?
:
:
: h
: 到a

l*********8
发帖数: 4642
6
哦,好像是的。http://blog.csdn.net/ws84643557/article/details/7556220

【在 r******l 的大作中提到】
: 放到cpp后link错误。网上查了一下,似乎用到template的函数都要放到.h文件里面?
: 当然,我对template知之甚少。我把sample code贴在原贴里了,谁能帮我把它修改一
: 下,使之能在Mac上编译通过么?多谢!

r******l
发帖数: 10760
7
Stack Overflow有人给出解决方法了。
不过我原来的code在Visual Studio里面没问题啊。严格按照C++的标准来说,是我原来
的code有问题,还是XCode有问题?谁能给仔细讲讲?
l*********8
发帖数: 4642
8
哈,stack overflow上跟我想的一样。 不过我不确定是否有用。 你试了可以吗?

【在 r******l 的大作中提到】
: Stack Overflow有人给出解决方法了。
: 不过我原来的code在Visual Studio里面没问题啊。严格按照C++的标准来说,是我原来
: 的code有问题,还是XCode有问题?谁能给仔细讲讲?

r******l
发帖数: 10760
9
试过了,可以。

【在 l*********8 的大作中提到】
: 哈,stack overflow上跟我想的一样。 不过我不确定是否有用。 你试了可以吗?
r******l
发帖数: 10760
10
我原来的写法看起来不符合C++标准,但是应该更符合一般人的想法,否则VS也不会支
持我那样写了。看起来MS更为程序员着想啊,呵呵。
l*********8
发帖数: 4642
11
我感觉是你的code的问题。

【在 r******l 的大作中提到】
: Stack Overflow有人给出解决方法了。
: 不过我原来的code在Visual Studio里面没问题啊。严格按照C++的标准来说,是我原来
: 的code有问题,还是XCode有问题?谁能给仔细讲讲?

1 (共1页)
进入JobHunting版参与讨论
相关主题
A家第一次电面(面经)C++里get array size的问题
Amazon kindle team电面stringstream 到底需要include哪个library
现在什么编译器支持C++11我的悲惨经历告诉你碰上很熟的题怎么办
Please contact me if you are good at C/C++ and/or compilertest C# lib with developed by others in visual studio 2013 (转载)
问个面试时候hash table的C++实现问题现在不会java,不会C#是不是很不好找工作了啊
攒人品,发几个面试题 C/C++Bloomerg 还没放弃我。 电话二面经过。
面试的时候可以用STL吗C++ Q35: sizeof() (B20_20)
请问怎么用Class实现Stack面经兼求祝福
相关话题的讨论汇总
话题: 里面话题: 函数话题: include话题: cpp