> Если бы я вам описывал все все все подробности и код то вы, скорее всего, даже не стали бы читать @Perzh вот я так и подумал, что вы не верите в то, что вам помогут. А чтобы случайно кто-нибудь, кому не в облом поковыряться в вашем коде, таки не смог его прочитать, то код вы и не привели. В итоге вы получили то, что хотели, но было ли это эффективно?
Если тип не зависит от параметра шаблона, то об отсутствии подходящего определения типа при подобном использовании мы узнаем вне зависимости от того, инстанцирован класс/вызвана функция или нет.
@Diel под "размером последнего индекса" я понимаю число 3 в выражении char (*r)[3]. Если вам нужно узнать индексы последнего элемента исходного массива в новом массиве, то они будут равны (sizeof(string) - 1) / sizeof(r[0]) и (sizeof(string) - 1) % sizeof(r[0]) соответственно. По одному только r из моего примера нельзя понять, на что он указывает, потому что это указатель. Есть разные варианты, как это можно победить.
@Diel разделите длину исходной строки на размер последнего индекса r. Вообще в C нет контроля границ массивов, т.е. вы легко можете написать r[100][500] и это будет сравнительно валидное выражение.
> я Вам не чувак
а было очень похоже, когда речь пошла про дельфи.
>> класс string в dll С++
> Из этой строчки вы поняли, что и dll и основное приложение написано на C++?
из этой строчки я понял, что dll пишется автором на C++. Основное приложение должно бы быть написано на С++ чтобы с лёгкостью передавать std::string куда-нибудь, иначе мы бы сначала увидели какой-нибудь другой вопрос, например, "как из дельфи передать в dll на С++ std::string".
> в любом случае Вы даете плохой совет
во-первых в моих ответах нет советов.
Во-вторых, не в любом же. В типичном случае использования одного компилятора всё будет работать нормально.
> Используйте в dll только pod-типы. Внутри можно использовать все, что захотите, но снаружи должны быть видны только pod'ы
вы бы тогда уж добавили, что функции видные снаружи должны быть хотя бы extern "C", а то ведь и mangling может быть разный, и конвенция вызова.
@becks вон вы о чём. Ключевая фраза по вашей ссылке -- "I can't control what compiler these plugins are built with". Сравните с вопросом автора: "В рамках задачи написания dll-библиотеки, в которую собираюсь передавать строки...".
Если бы ваш класс был POD-типом, то можно было бы заменить указатель на член смещением от начала: offsetof(color, hsv[0]). Указатель на член мощнее этой конструкции в том смысле, что может быть использован не только с оригинальным типом T из &T::f, но и с его наследниками.