2011-08-16 62 views
-3

最初我有以下几点。现在在C++结构中删除typedef时出现编译器错误

struct A: public B 
{     
}; 

typedef struct A C; 

,我改变了到

typedef struct: public B 
{     
} C; 

,我得到一个链接错误的所有功能越来越

fun(C*) 

作为参数。

我该如何解决这个问题?

+3

为什么不简单地说'struct C:public B {};'?另外在C++中,结构不在单独的命名空间中。 – user786653

+4

删除了C标签。涉及继承。因此,这个问题与C无关C –

+1

你会得到什么链接器错误? – jirkamat

回答

0

我不完全确定,但有一些想法:你不能转发declare typedefs,所以如果有人前转声明A可能会导致问题(即使它似乎不相关)。

我怀疑真正的问题是因为你是结构而不是命名它。几乎可以肯定的是,这导致编译器给它不同的链接(例如,它在每个文件中获得不同的装饰名称),并且找不到适当的函数。

最后,由于您使用的是继承,因此您必须使用C++,因此您根本不应该使用typedef作为您的struct

+0

问题是我键入的结构没有在C++中命名。谢谢 – sramij