當我們有兩個操作符用於輸出對象和這些對象的數組,並嘗試輸出常量對象數組時,會涉及到對象的操作符。有沒有辦法迫使數組的運算符與常量對象的C數組一起工作?常量指針和常量數組的輸出
樣品的編號:
#include <iostream>
#include <cstddef>
using std::size_t;
namespace nm
{
struct C { int i; };
template <size_t N>
using c_c_array = C[N];
inline std::ostream& operator << (std::ostream& lhs, C const*) { return lhs << "1\n"; }
template <size_t N>
inline std::ostream& operator << (std::ostream& lhs, c_c_array<N> const&) { return lhs << "2\n"; }
}
int main()
{
nm::C c{1};
nm::C arr[5];
nm::C const c_const{1};
nm::C const arr_const[5] {{1}, {1}, {1}, {1}, {1}};
std::cout << &c // 1 - ok
<< arr // 2 - ok
<< &c_const // 1 - ok
<< arr_const; // 1 --ups
return 0;
}
輸出:1 2 1 1
附加地,操作者2在我的情況下輸出使用1。
添加初始化到你的代碼,使人們停止回答錯誤的問題,即'c_const {};'和'arr_const [5] {};' – Rostislav
不要緊,它是如何inicialized在所有的問題。如果它是非官方的或官方的,那麼運營商1將被呼叫。這僅僅是一個例子,我沒有用這個常數,只是爲了說明運營商叫做 –
的命令。你看到人們給你的答案嗎?這是你正在尋找什麼?.. – Rostislav