2012-03-27 3 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' или' неуправляемый'. –

+0

Кроме того, можете ли вы показать нам этот код? Как то, что находится в 'wrapper.cpp', и файл, в котором вы объявили класс' Processor'? –

+0

Вы делаете '#include" first.cpp "во втором файле' .cpp'? – Naveen

ответ

2

Вы не можете (по крайней мере, чистым способом), и вам не следует.

Создание полей private (даже по умолчанию) - способ программиста сообщить вам , что вы не должны создавать экземпляр этого класса.

Кроме того, если класс определен внутри файла cpp, он отображается только в этой единицы перевода. Вы не включаете файлы cpp. Если необходимо, переместите определение внутри заголовка и включите его, но не cpp.

0

Не включайте файл cpp непосредственно в файл cpp, это может вызвать всевозможные проблемы. Класс внутри файла cpp означает, что вы не должны использовать его из любого другого файла cpp, если вам действительно нужен этот класс, тогда вам нужно переместить этот класс в соответствующий заголовок и включить заголовочный файл. Но прежде чем это сделать, сначала проверьте, есть ли альтернативные способы делать то, что вы пытаетесь сделать, не подвергая новый класс.

+0

Теперь я переместил объявление класса в header.But все же я получаю ошибку, как упоминалось выше. У меня нет другого выхода, поэтому я должен был создать класс в проекте non/cli и использовать его. Можете ли вы предложить любой доступный хороший способ? – user987316

Смежные вопросы