forward-declaration相关内容
我有以下代码,但编译器说sender_wrapper是未定义的,即使我转发声明它。我可以不做一个结构的向前声明吗? (用VS2003编译) struct send_wrapper; struct IPSend { IPSend :: IPSend(const send_wrapper& sender):_sender(sender){} void IPSend ::
..
我有一个头文件,将包含大量(30+)内联函数。 我不想让读者滚动或搜索内联函数的定义(实现),而是想要一个向前声明它声明具有描述该函数的注释的函数声明。这部分将允许读者找到如何使用一个函数或查找一个函数,而不必向下滚动到实现。 此外,我想读者习惯使用函数,而不必看到它们的实现。 单独函数的forward声明的语法是什么? {这适用于C99和C ++} > FYI,我使
..
我有以下代码: #include using namespace std; class CForward; void func(CForward * frw){delete frw; } class CForward { public: 〜CForward(){cout
..
我有一个使用Boost图形库的邻接表的问题。它似乎是一个循环依赖问题: 我有一个模板的typedef T使用一些类A.另外A存储一个指向一个类型T的对象的指针。现在编译器告诉我,T不命名 这里是我更具体文件的例子: // graphdefinitions.hpp #include“lane.hpp” #include“tie.hpp” typedef boost ::
..
我有一个使用Boost图形库的邻接表的问题。它似乎是一个循环依赖问题: 我有一个模板的typedef T使用一些类A.另外A存储一个指向一个类型T的对象的指针。现在编译器告诉我,T不命名 这里是我更具体文件的例子: // graphdefinitions.hpp #include“lane.hpp” #include“tie.hpp” typedef boost ::
..
我有一个使用Boost图形库的邻接表的问题。它似乎是一个循环依赖问题: 我有一个模板的typedef T使用一些类A.另外A存储一个指向一个类型T的对象的指针。现在编译器告诉我,T不命名 这里是我更具体文件的例子: // graphdefinitions.hpp #include“lane.hpp” #include“tie.hpp” typedef boost ::
..
我通常主要使用forward声明,如果我有一个类,不需要完整的定义在.hpp文件 Ex) //B.hpp 命名空间A_file { class A; } 命名空间B_file { class B { public: B(); private: A * ptr_to_A; } } //B.cpp #include“A.hpp” 使用命
..
我的问题: 有两个类,A类和B类,所以我得到A.h和A.cpp和B.h和B.cpp。 A需要知道B和B需要知道A.我解决了以下方式(我不知道为什么它必须这样...) Ah: #include“Bh” A类{... A.cpp: #include“Ah” Bh: #include“Ah” A类; // forward
..
我想在我的软件中使用类的前向声明,所以我可以有typedefs 并在类完整声明中使用它们。 Smth像这样: class myclass; typedef boost :: shared_ptr心理学 typedef std :: list myclasslist; class myclass:public basecla
..
假设我有这些抽象类 Foo 和 Bar : $ b b class Foo; class Bar; class Foo { public: virtual Bar * bar()= 0; }; class Bar { public: virtual Foo * foo()= 0; }; 进一步假设我有派生类 ConcreteFoo 和
..
我刚刚接受采访。我被问什么是“前进声明”。然后我问他们是否是与远期申报相关的危险。 我无法回答第二个问题。在网上搜索没有显示任何有趣的结果。 那么,有人知道与使用前瞻性声明相关的任何危险吗? 解决方案 很好,除了有关重复的问题... ... 如果在指向不完整类型的指针上调用 delete 得到未定义的行为。在实践中,析构函数可能不会被调用。 我们可以看到,在
..
//这是一个头文件。 class MyClass; //可以向前声明,因为该函数使用引用。 //但是,我怎么能转发关于std :: wstring的声明? // class std :: wstring;不工作。 VOID Boo(const MyClass& c); VOID Foo(const std :: wstring& s); 解决方案 #i
..
void foo() { bar(); //错误:'bar'尚未声明 } void bar() { } 命名空间N { void foo() { N :: bar(); //错误:'bar'不是'N'的成员 } void bar() { } } class C { static void foo() { C :: bar(); // w
..
我已经做了两个相同的类X和Y,带有指向对方的指针。参见下面的代码X.h,Y.h与所有X和Y的互换是相同的。然而,此代码在我的方法Connect中出现错误(错误C2027:使用未定义的类型'Y')。在X.h中,我已经向前声明了类Y,但是它不知道Y有一个名为SetXPointer的方法。因此我还需要转发声明这个方法,正确吗? 如果我尝试这样做(添加行Y :: SetXPointer(X * pX
..
所以我有一个类A,在那里我想调用一些类B的功能。所以我包括“b.h”。但是,在B类中,我想调用A类函数。如果我包括“a.h”,它最终在一个无限循环,对吧? 解决方案 每个类(A和B)都应该有一个头文件和一个实现文件。 / p> 每个头文件(例如 Ah )不应包含其他头文件(例如 Bh ),但可以包括对另一个类的前向引用(例如 B类; ),然后可以使用指针和/在其声明中的另一个类(例如
..
我想让A类成为B类的朋友。 class A { public: void show(const B&); // ## 1 ## but this one work fine B ob; //错误不完整类型 }; class B { public: int b; B():b(1){} friend class A; }; 所
..
编译 #include“Sprite.h” class GameObject { public: int x,y,w,h; Sprite sprite; public: GameObject()? GameObject(int _ x,int _y,int _w,int _h); virtual〜GameObject(); }; 这不
..
如何在C ++中执行引用/声明以避免循环头文件引用? 我在头文件中有#ifndef guard,我需要这个向前引用的东西 - 我之前使用>
..
我在同一个.cpp上有两个类: // forward class B; class A { void doSomething(B * _b){ _b-> add() } }; B类{ void add(){ ... } }; 前进不起作用,我无法编译。 我有这个错误: 错误:成员访问不完全类型'B' 注意:向前
..
我想知道为什么C ++的声明使用规则不在类内。 看看这个例子: #ifdef BASE struct Base { #endif struct B; struct A { B * b; A(){b-> foo(); } }; struct B { void foo(){} }; #ifdef BASE }; #endif int m
..