-3
最初我有以下几点。现在在C++结构中删除typedef时出现编译器错误
struct A: public B
{
};
typedef struct A C;
,我改变了到
typedef struct: public B
{
} C;
,我得到一个链接错误的所有功能越来越
fun(C*)
作为参数。
我该如何解决这个问题?
最初我有以下几点。现在在C++结构中删除typedef时出现编译器错误
struct A: public B
{
};
typedef struct A C;
,我改变了到
typedef struct: public B
{
} C;
,我得到一个链接错误的所有功能越来越
fun(C*)
作为参数。
我该如何解决这个问题?
我不完全确定,但有一些想法:你不能转发declare typedefs,所以如果有人前转声明A
可能会导致问题(即使它似乎不相关)。
我怀疑真正的问题是因为你是结构而不是命名它。几乎可以肯定的是,这导致编译器给它不同的链接(例如,它在每个文件中获得不同的装饰名称),并且找不到适当的函数。
最后,由于您使用的是继承,因此您必须使用C++,因此您根本不应该使用typedef
作为您的struct
。
问题是我键入的结构没有在C++中命名。谢谢 – sramij
为什么不简单地说'struct C:public B {};'?另外在C++中,结构不在单独的命名空间中。 – user786653
删除了C标签。涉及继承。因此,这个问题与C无关C –
你会得到什么链接器错误? – jirkamat