coder написав:koala написав:Просто берете і ініціалізуєте, в чому проблема?
як? як це зробити?
Я не зрозумів чи це ви від себе задали питання чи від мене, але в будь-якому випадку давайте пригадаємо як це можна зробити
#include <iostream>
#include <conio.h>
using namespace std;
//
class A
{
protected:
int var_k;
public:
A(int k = 0) : var_k(k) {};
int get_k();
};
int A::get_k()
{
return var_k;
}
//
//
class B : public A
{
public:
B(int k = 0) : A::A(k) {};
};
//
int main()
{
//Статично
B::A ob(7);//Перший спосіб
cout << ob.get_k();
cout << endl;
B ob2(2);//Другий спосіб
cout << ob2.get_k();
cout << endl;
//Динамічно
B::A* ob3 = new B::A(65);//Перший спосіб
cout << ob3->get_k();
cout << endl;
B* ob4 = new B(43);//Другий спосіб
cout << ob4->get_k();
getch();
return 0;
}
Наприклад класу А і В я продемонстрував два варіанти як це можна зробити ob - за допомогою конструктора класу А, і В(ob2) класі за допомогою свого конструктора який викликає конструктор А. Якщо я щось не правильно написав чи є ще якісь способи поправте мене.
Тепер повернемося до мого питання
при спробі аналогічній з класом А в мене нічого не виходить
MyTButton::TButton* NewMyTButton = new MyTButton::TButton(Form3);
▼Прихований текст
[bcc32 Error] Unit3.cpp(197): E2451 Undefined symbol 'TButton'
Full parser context
Unit3.cpp(174): parsing: void _fastcall TForm3::DBGrid1DrawColumnCell(TObject *,const TRect &,int,TColumn *,TGridDrawState)
[bcc32 Error] Unit3.cpp(197): E2451 Undefined symbol 'NewMyTButton'
Full parser context
Unit3.cpp(174): parsing: void _fastcall TForm3::DBGrid1DrawColumnCell(TObject *,const TRect &,int,TColumn *,TGridDrawState)
[bcc32 Error] Unit3.cpp(197): E2303 Type name expected
Full parser context
Unit3.cpp(174): parsing: void _fastcall TForm3::DBGrid1DrawColumnCell(TObject *,const TRect &,int,TColumn *,TGridDrawState)
[bcc32 Error] Unit3.cpp(197): E2379 Statement missing ;
Full parser context
Unit3.cpp(174): parsing: void _fastcall TForm3::DBGrid1DrawColumnCell(TObject *,const TRect &,int,TColumn *,TGridDrawState)
[bcc32 Error] Unit3.cpp(242): E2060 Illegal use of floating point
Full parser context
Unit3.cpp(230): parsing: void _fastcall TForm3::ОКClick(TObject *)
ну і через конструктор
class MyTButton : public TButton
{
int data;
MyTButton(System::Classes::TComponent* AOwner) : MyTButton::TButton(System::Classes::TComponent* AOwner) {};
};
▼Прихований текст
[bcc32 Error] Unit3.h(25): E2113 Virtual function 'MyTButton::MyTButton(TComponent *)' conflicts with base class 'TButton'
Full parser context
Unit3.cpp(7): #include Unit3.h
Unit3.h(20): class MyTButton
[bcc32 Error] Unit3.h(25): E2312 'TButton' is not an unambiguous base class of 'MyTButton'
Full parser context
Unit3.cpp(7): #include Unit3.h
Unit3.h(20): class MyTButton
Unit3.h(27): decision to instantiate: MyTButton::MyTButton(TComponent *)
--- Resetting parser context for instantiation...
Unit3.h(25): parsing: MyTButton::MyTButton(TComponent *)
[bcc32 Error] Unit3.h(25): E2251 Cannot find default constructor to initialize base class 'TButton'
Full parser context
Unit3.cpp(7): #include Unit3.h
Unit3.h(20): class MyTButton
Unit3.h(27): decision to instantiate: MyTButton::MyTButton(TComponent *)
--- Resetting parser context for instantiation...
Unit3.h(25): parsing: MyTButton::MyTButton(TComponent *)
[bcc32 Warning] Unit3.cpp(136): W8004 'str' is assigned a value that is never used
Full parser context
Unit3.cpp(32): parsing: void _fastcall TForm3::Button1Click(TObject *)
[bcc32 Error] Unit3.cpp(197): E2247 'MyTButton::MyTButton(TComponent *)' is not accessible
Full parser context
Unit3.cpp(174): parsing: void _fastcall TForm3::DBGrid1DrawColumnCell(TObject *,const TRect &,int,TColumn *,TGridDrawState)
[bcc32 Error] Unit3.cpp(209): E2316 'id' is not a member of 'MyTButton'
Full parser context
Unit3.cpp(174): parsing: void _fastcall TForm3::DBGrid1DrawColumnCell(TObject *,const TRect &,int,TColumn *,TGridDrawState)
[bcc32 Error] Unit3.cpp(242): E2060 Illegal use of floating point
Full parser context
Unit3.cpp(230): parsing: void _fastcall TForm3::ОКClick(TObject *)
koala написав:Ви питаєте, як ініціалізувати об'єкт базового класу в конструкторі нащадка? Знущаєтеся, чи що?
Не знущаюсь я серйозно