Проблема создания класса C ++ - PullRequest
0 голосов
/ 26 октября 2010

Я включил

Заголовочные файлы, Заголовок Gard

, но я не могу создать конкретный класс

Ошибка получения

error C2065: 'ClassName' : undeclared identifier



Sample Code

Class A{

 //instantiate class B

}


Class B {


 //need to instantiate Class A

}

Ответы [ 3 ]

1 голос
/ 26 октября 2010

В моем понимании существует круговая зависимость между классами A и B. Поэтому вам нужно использовать предварительное объявление как минимум для одного из этих двух классов (или даже для обоих).

1 голос
/ 02 ноября 2010

Поскольку вы еще не опубликовали никакого реального кода, который мы могли бы использовать, я сделаю предположение, как на самом деле выглядит ваш код:

хиджра:

#ifndef HEADER_A
#define HEADER_A

#include "B.h"
class A {
private:
  B someMember;
};

B.h:

#ifndef HEADER_B
#define HEADER_B
#include "A.h"

class B {
public:
  doSomething(A param);
};

B.cpp:

#include "B.h"
#include "A.h"

void B::doSomething(A param) { }

Как сказал Флинш, вам нужно иметь предварительные объявления, чтобы избежать проблем с порядком включения. Самый простой способ - избавиться от циклических включений в файлах .h и просто вместо этого включить предварительные объявления (class B; и class A; в A.h и B.h).

1 голос
/ 26 октября 2010

кстати. у вас нет ; в конце определения класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...