2012-03-27 54 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

相关问题