2015-07-05 3 views
0

У меня есть этот следующий код:C++ Тип Aliasing Const Выпуск

using ccStr = char*; 

class Tt { 
private: 
    const char* tmp; 

public: 
    const ccStr & str() { 
     return tmp; 
    } 
}; 

Но проблема в том, что «Const ccStr» получает оценку в «символ * сопзЬ», который в основном причина, почему TMP не может связываться с тип возврата. Я не понимаю, почему const перемещается ... Как я могу решить это без изменения псевдонимов ccStr?

+0

'станд :: add_pointer <станд :: add_const <станд :: remove_pointer :: Вид> :: Вид>: : type'? :) – Jarod42

+0

@ Jarod42 ouch. Жаль, что это реальный ответ: p – Quentin

+0

В C++ 14 это можно сделать: std :: add_pointer_t >>. лол. Но это все еще выглядит ужасно. : S :) – v4ss

ответ

0

const ccStr является константный указатель, const char * указатель указывает на константный полукокса

return const_cast<const ccStr >(tmp); 
+0

А, я понимаю :). Думаю, @ Jarod42 также ответил на мой последний вопрос, как решить конструкцию в символ cons cons xD. – v4ss

Смежные вопросы