Вы сказали: «Для меня структура - это интуитивно понятная совокупность полей - узел структуры данных или что-то еще».То, что вы описываете, это Обычные старые данные .Стандарт C ++ имеет мнение о том, что означает POD в отношении возможностей языка C ++.Я полагаю, что, где это возможно, вы принимаете значение POD, используемое в C ++ 0x .
Мне нужно найти ссылку на это, но я подумал, что в отношении типачто касается определений, ключевые слова "struct" и "class" должны быть синонимами в C ++ 0x.Единственное отличие состоит в том, что класс по умолчанию имеет закрытые члены, а структура по умолчанию - public.Это означает, что вы никогда не увидите сообщения об ошибках компилятора, такие как «Тип X, впервые увиденный с использованием struct, теперь видимый с использованием класса».как только мы все используем C ++ 0x.
, я думаю, что неправильно иметь строгие правила о том, когда использовать класс, а когда использовать struct.Если для вас важна согласованность, сделайте стандарт кодирования, в котором есть какие-то правила, которые вам нравятся.Просто убедитесь, что все знают, что ваш стандарт кодирования связан с тем, как вы хотите, чтобы ваш код выглядел - он вообще не имеет отношения к базовым языковым возможностям.
Может быть, приведу пример, где я нарушаю все ваши правила,Вы говорите: «Для меня структура - это интуитивно набор полей - узел структуры данных или что-то еще, тогда как класс - это абстракция».Когда я хочу написать класс, который реализует некоторую абстракцию, я определяю интерфейс как структуру с чисто виртуальными методами (например,!) - это раскрывается в заголовке, так же как и фабричный метод для создания моего конкретного класса.Конкретный класс вообще не выставляется в публичном заголовке.Поскольку конкретный класс является секретом, он может быть реализован так, как мне нравится, и для внешнего кода это не имеет значения.
Я бы предложил, если вы думаете, что ключевые слова struct и class имеют какое-либо отношение к концепцииPOD, тогда вы еще не понимаете C ++.