4
A
回答
5
否。如果實際實例化/使用該類,那麼類定義對於當前編譯器中的編譯器必須是可見的。
通常情況下,您將在每個需要使用該類的.cpp
中包含的頭文件中定義該類。請注意,通常是一個類定義方法僅宣佈,因爲它們的實現(定義)通常放在一個單獨的文件.cpp
(除非你有inline
方法,屬於類定義中定義)。
注意然而,你可以只用一個類聲明(通常稱爲向前聲明),如果你需要的是申報/定義指針類脫身 - 如果所有的編譯器需要知道IE是一個類型在實際需要對其進行操作之前,會定義該名稱(實例化該類,調用其方法,...)。再次,這是而不是足以定義該類的變量/成員,因爲編譯器必須至少知道該類的大小來決定其他類/堆棧的內存佈局。
回顧一下有關的術語和有關您可以/不可以做什麼:
// Class declaration ("forward declaration")
class MyClass;
// I can do this:
class AnotherClass
{
public:
// All the compiler needs to know here is that there's some type named MyClass
MyClass * ptr;
};
// (which, by the way, lets us use the PIMPL idiom)
// I *cannot* do this:
class YetAnotherClass
{
public:
// Compilation error
// The compiler knows nothing about MyClass, while it would need to know its
// size and if it has a default constructor
MyClass instance;
};
// Class definition (this can cohexist with the previous declaration)
class MyClass
{
private:
int aMember; // data member definition
public:
void AMethod(); // method declaration
void AnInlineMethod() // implicitly inline method definition
{
aMember=10;
}
};
// now you can do whatever you want with MyClass, since it's well-defined
2
如果你的意思是這樣的:
// B.cpp
class B { /* ... */ };
// A.cpp
B* b = new B();
然後沒有,因爲你需要的類定義(要知道它的大小至少)。
但是可以使用工廠方法來實現相同的效果,只要你是有不透明對象指針抗衡(例如如果該B
類從一些接口繼承)。
相關問題
- 1. 的Python在單獨的PY文件中定義類函數
- 2. Typescript:在單獨的文件中定義類及其方法
- 3. C++命名空間和在單獨文件中定義類
- 4. 在Go中使用單獨文件中定義的代碼
- 5. 如何在MATLAB中定義一個使用單獨文件中定義的方法的類(在@ -folder中)?
- 6. 不能繼承在單獨的文件中定義的類 - 紅寶石
- 7. C++中的單獨文件中的類?
- 8. 在一個單獨的CSS文件中定義使用自定義的字體
- 9. 未定義的成員函數引用在單獨的文件中定義
- 10. 在單獨的文件中爲每個枚舉定義方法
- 11. 在帶有MATLAB屬性的單獨文件中定義方法
- 12. 在單獨的php文件中定義引導按鈕
- 13. IOS應用程序 - 在單獨的文件中定義協議
- 14. 在一個單獨的頭文件中定義
- 15. Typo3在單獨的文件中存儲sql表定義
- 16. Python在單獨文件中管理類
- 17. 在Typescript定義文件中定義類
- 18. 如何在單獨文件中定義控制器
- 19. iPhone上的Cocos2d:使用單獨的類文件中定義的精靈
- 20. 單獨文件中的C++類
- 21. 是否可以在頭文件中聲明constexpr類並將其定義在單獨的.cpp文件中?
- 22. 如何在單獨的.cs文件(在WPF中)定義控件的行爲?
- 23. 單獨文件中定義的模塊模式
- 24. 爲什麼Duration在schema.org中定義爲單獨的類型?
- 25. 在單獨的類文件中的Android菜單代碼
- 26. 自定義單詞的單獨Vim拼寫文件
- 27. 在內部類GDB中的不完整類型與虛擬方法定義在一個單獨的文件
- 28. 單獨或在setOnClickListener()中定義OnClickListener?
- 29. QML StackView如何推送在單獨文件中定義的組件?
- 30. jaxb2 maven插件,在單獨的標籤中定義多個模式文件