Как выделить класс из другого класса в Qt C ++ - PullRequest
0 голосов
/ 26 мая 2011

Я сделал 2 класса в моем проекте.Я хочу использовать функцию из 1-го класса во 2-й класс, проблема в том, что я не могу создать экземпляр 1-го класса во 2-м классе.Кстати, оба класса были объявлены в разных заголовках.

вот пример кода:

заголовок 1:

class 1stclass{
   public:

   2ndclass *class2;
   void function1(QString parameter1)
   {
       QString str1;
       list = class2->function2(parameter1);
   }
};

заголовок 2:

class 2ndclass{
   public:

   QString function2(QString parameter2)
   {
       QString str2 = parameter2 + "hello"; 
       return str2;
   }
};

Я хочу использовать функцию в функции 2, но она дает мне ошибку.вот сообщение об ошибке:

  1. ISO C ++ запрещает объявление '2ndclass' без типа;
  2. Ожидается ';'до '*' токена;
  3. 'class2' не был объявлен в этой области;

Ответы [ 3 ]

5 голосов
/ 26 мая 2011

Имена классов не могут начинаться с цифры в C ++.

Class1 и Class2 - допустимые имена.

0 голосов
/ 26 мая 2011

Почему бы вам не использовать файл .cpp. Первый класс не может знать, что такое 2-й класс, если вы не включите заголовок.

Заголовок 2:

class SecondClass
{
public:
    QString function2( const QString &parameter2 );
};

Cpp 2:

SecondClass::function2( const QString &parameter2 )
{
  // your func
}

Заголовок 1: Вы можете включить header2.h или использовать предварительную декларацию, например

class SecondClass;

class FirstClass
{
public:
    QString function( const QString &parameter );

    SecondClass *s2;
};

Cpp 1:

#include "SecondClass.h"

FirstClass::function( const QString &parameter )
{
    s2 = new SecondClass;
    QString str1;
    list = s2->function2(parameter1);
}
0 голосов
/ 26 мая 2011

Компилятор ничего не знает о втором классе при попытке создать указатель. Разве вы не забыли включить заголовочный файл с объявлением второго класса? Файл включен в ваш файл проекта qt или Makefile? Кстати, первым символом неопределителя не может быть число, только a-z и подчеркивание.

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