2012-03-27 51 views
-1

在我的C++項目中,其中一個.cpp文件有一個類聲明。現在,我想在另一個.cpp文件在同一項目中實例化這個類,但我收到此錯誤信息:訪問同一C++項目中的類

 
error C2248: 'Processor' : cannot access private member declared in class 'Processor' 
    c:\Test\wrapper.cpp : see declaration of 'Processor' 

使用不同的訪問說明符我們不能重新定義類,它就會默認private訪問符。

我該如何做這項工作?

+0

請注意,在MSVC++編譯器中,「/ CLR」選項默認是關閉的。這裏的'[C++]'標籤指的是標準C++(非'/ CLR')。您不必將所有內容限定爲非'/ CLR'或''unmanaged''。 – 2012-03-27 08:27:33

+0

另外,你可以向我們展示有問題的代碼嗎?像'wrapper.cpp'和你聲明'Processor'類的文件一樣? – 2012-03-27 08:31:59

+0

你在第二個'.cpp'文件中正在做'#include「first.cpp」'? – Naveen 2012-03-27 08:32:19

回答

2

你不能(至少在一個乾淨的方式),你不應該。

製作字段private(即使默認情況下)是程序員告訴你的方式你不應該實例化這個類

另外,如果在cpp文件中定義了一個類,它只在該翻譯單元中可見。您不包括cpp文件。如果必須,請將標題內的定義移動幷包含該標題,但不包括cpp

0

不要將cpp文件直接包含在cpp文件中,否則可能會導致各種問題。這個類在cpp文件中意味着你不應該從任何其他cpp文件使用它,如果你真的需要這個類,那麼你需要將該類移動到合適的頭部幷包含頭文件。但在此之前,首先檢查是否有任何替代方法可以做到您正在嘗試做的事情,而不會暴露新類。

+0

我現在已經在頭文件中移動了類聲明,但仍然收到了上面提到的錯誤。我沒有任何其他可用的方式,因此我必須在non/cli項目中創建類並使用它。你能建議任何可用的好方法嗎? – user987316 2012-03-27 09:04:32

相關問題