Передача переменной CList выдает ошибку C2248: «CObject :: CObject»: не может получить доступ к закрытому члену

В моем классе у меня есть статический Clist variable заявлено следующим образом:

#include<stdio.h>
#include<conio.h>
#include <afxtempl.h>
void otherfunc(CList<int,int> a)
{

}
class A
{
public:
CList<int,int> myvariable;
void myfunc()
{
otherfunc(myvariable);
}

};int _tmain(int argc, _TCHAR* argv[])
{
A a;
a.myfunc();
getch();
return 0;
}

otherfunc() не является частью моего класса.

Куда я иду не так?
Я только что вставил фрагмент кода с проблемой. Я инициировал его, и все работает файл, за исключением строки, где я вызываю otherfunc (). Он не зависит от статического ключевого слова. Даже если я удаляю статические, я получаю ту же ошибку.

Отредактировано: вот ошибка, которую я получаю:

C:\program files (x86)\microsoft visual studio 9.0\vc\atlmfc\include\afxtempl.h(776) : error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject'
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(561) : see declaration of 'CObject::CObject'
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(532) : see declaration of 'CObject'
1>        This diagnostic occurred in the compiler generated function 'CList<TYPE,ARG_TYPE>::CList(const CList<TYPE,ARG_TYPE> &)'
1>        with
1>        [
1>            TYPE=int,
1>            ARG_TYPE=int
1>        ]

0

Решение

Ваш код как таковой не компилируется (Class должно быть class, Public должно быть public так далее). Что такое сообщение об ошибке? Также вы должны опубликовать простой компилируемый пример, который воспроизводит вашу ошибку. Я предполагаю, что вы не создали экземпляр своей статической переменной за пределами объявления класса, см.

http://www.learncpp.com/cpp-tutorial/811-static-member-variables/

0

Другие решения

Вы не можете получить ошибку из-за «Public:». Потому что «Public:» — это не ключевое слово, это ярлык. Вот почему «myvariable» по умолчанию закрыт.
Вместо «Public:» используйте «public:», а также замените «Static» на static.

0

Взгляните на определение —

void otherfunc(CList<int,int> a)

Входной параметр CList<int,int> a передается по значению, это означает, что при вызове этой функции он будет копировать входной параметр с помощью CList<int,int> Копировать конструктор.
Но CList<int,int> не реализует конструктор копирования, а его базовый класс CObject определите его конструктор копирования как частный.

Вы должны изменить определение на —

void otherfunc(CList<int,int>& a)
0
По вопросам рекламы [email protected]