Size: a a a

2021 February 28

IZ

Ilia Zviagin in supapro.cxx
Vladimir
Тогда будет ошибка компиляции
Да вроде не должна...
источник

IZ

Ilia Zviagin in supapro.cxx
Mikhail Kornaukhov
Ты его вызываешь неявно в дефолтном конструкторе B
Да вроде нет, там от сроки ...
источник

IZ

Ilia Zviagin in supapro.cxx
Vladimir
Тогда будет ошибка компиляции
Какая ошибка то?
источник

MK

Mikhail Kornaukhov in supapro.cxx
Ilia Zviagin
Да вроде нет, там от сроки ...
это он поле так иниуиализирует
источник

MK

Mikhail Kornaukhov in supapro.cxx
а там еще наследование
источник

V

Vladimir in supapro.cxx
prog.cpp: In constructor ‘B::B()’:
prog.cpp:17:15: error: use of deleted function ‘A::A()’
 B() : a("123"){
              ^
prog.cpp:8:2: note: declared here
 A() = delete;
 ^
источник

IZ

Ilia Zviagin in supapro.cxx
Mikhail Kornaukhov
это он поле так иниуиализирует
А, правда... Я что-то устал, не внимательный...
источник

MK

Mikhail Kornaukhov in supapro.cxx
Vladimir
prog.cpp: In constructor ‘B::B()’:
prog.cpp:17:15: error: use of deleted function ‘A::A()’
 B() : a("123"){
              ^
prog.cpp:8:2: note: declared here
 A() = delete;
 ^
B() неявно вызывает A()
источник

DK

David Kravets in supapro.cxx
Mikhail Kornaukhov
B() неявно вызывает A()
Ага
источник

IZ

Ilia Zviagin in supapro.cxx
Vladimir
Тогда будет ошибка компиляции
Тогда тебе надо в конструкторе B вызфывть не дефолтный конструктор A для предка
источник

V

Vladimir in supapro.cxx
да, точно, помогло, спасибо
источник

DK

David Kravets in supapro.cxx
#include <iostream>

using namespace std;

struct A{
 std::string path;
 
 A(const std::string& val){
   this->path = val;
   std::cout << "constructor string" << std::endl;
 }
};
struct B : public A {
 B() : A("123"){
   
 }
};
int main() {
 B b;
 return 0;
}
источник

C

CodeDetector in supapro.cxx
David Kravets
#include <iostream>

using namespace std;

struct A{
 std::string path;
 
 A(const std::string& val){
   this->path = val;
   std::cout << "constructor string" << std::endl;
 }
};
struct B : public A {
 B() : A("123"){
   
 }
};
int main() {
 B b;
 return 0;
}
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
источник

MK

Mikhail Kornaukhov in supapro.cxx
Vladimir
всем привет, можно ли как-нибудь избавиться от конструктора без аргументов в структуре A?
struct A{
 std::string path;
 A(){
   std::cout << "constructor base" << std::endl;
 }
 A(const std::string& val){
   this->path = val;
   std::cout << "constructor string" << std::endl;
 }
};
struct B : public A {
 A a;
 B() : a("123"){
   std::cout << a.path << std::endl;
 }
};
int main() {
 B b;
 return 0;
}
/*
stdout:
constructor base
constructor string
123
*/
Еще можете посмотреть про member initializer list, для конструктора A от строки https://en.cppreference.com/w/cpp/language/constructor, так правильнее будет, сейчас получается строка path инициализируется дефолтным конструктором, потом происходит переприсваивание
источник

LA

Liber Azerate in supapro.cxx
David Kravets
#include <iostream>

using namespace std;

struct A{
 std::string path;
 
 A(const std::string& val){
   this->path = val;
   std::cout << "constructor string" << std::endl;
 }
};
struct B : public A {
 B() : A("123"){
   
 }
};
int main() {
 B b;
 return 0;
}
this->path
Использование using namespace std;, но при этом std::cout и т.д.
Структуры по умолчанию наследуются публично
Магический литерал в качестве аргумента для базы
Можно было бы сделать значение по умолчанию
источник

DK

David Kravets in supapro.cxx
Liber Azerate
this->path
Использование using namespace std;, но при этом std::cout и т.д.
Структуры по умолчанию наследуются публично
Магический литерал в качестве аргумента для базы
Можно было бы сделать значение по умолчанию
Эт не мой код, я удалить ошибку и загрузил
источник

LA

Liber Azerate in supapro.cxx
David Kravets
Эт не мой код, я удалить ошибку и загрузил
В том коде относительно не было ошибок. Если уж пытаешься что-то показать, мог бы сделать это нормально
источник

DK

David Kravets in supapro.cxx
Liber Azerate
В том коде относительно не было ошибок. Если уж пытаешься что-то показать, мог бы сделать это нормально
То код не компил. Вообще то
источник

DK

David Kravets in supapro.cxx
Мне компилятор простил эту ошибку
источник

LA

Liber Azerate in supapro.cxx
David Kravets
То код не компил. Вообще то
https://t.me/supapro/843112
Компилится
источник