Re[26]: Они сделали дерьмо опять
От: YuriV  
Дата: 22.06.20 10:23
Оценка: -2
Здравствуйте, Kluev, Вы писали:

K>С вложенным классом Storage::Blob такой номер не пройдет т.к. в языке С++ нет механизма опережающих описаний. Это баг уровня языка который нужно исправлять. Как бы вы тут не распинались, что это и не нужно.


K>
K>struct Storage::Blob;
K>void foo(Storage::Blob *blob);
K>


Правда что ли? Суждениями похож на любителя раста, те тоже рассуждают о том чего не знают.

// main_iface.h
#ifndef MAIN_IFACE_H
#define MAIN_IFACE_H

class storage {
public:
    class blob;
};

storage::blob* make_blob();
int using_blob(storage::blob* b);

#endif /* MAIN_IFACE_H */


// main_impl.cpp
#include "main_iface.h"

class storage::blob {
public:
  int finish() {
    return 42;
  }
};

storage::blob* make_blob() {
  return new storage::blob();
}

int using_blob(storage::blob* b) {
  return b->finish();
}


// main.cpp
#include "main_iface.h"
#include <iostream>

int main() {
    std::cout << using_blob(make_blob()) << "\n";
    return 0;
}


Собирается gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), С++98,

g++ main.cpp main_impl.cpp -o main

Может это баг уровня твоего знания С++?

ЗЫ: Про сырой указатель и мемлик знаю, это к вопросу о возможностях языка.
Отредактировано 22.06.2020 10:28 YuriV . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.