/ / Sovraccarico operatore bit shift sinistro - c ++, parola chiave operator

Sovraccarico dell'operatore bit di spostamento a sinistra - c ++, parola chiave dell'operatore

Ciao ragazzi,

Sto cercando di sovraccaricare l'operatore bit di spostamento sinistro, <<, per fare qualcosa come:

char value[] = "Hello";
value << 2;

mentre lo faccio vorrei stamparlo come: "val", in modo da eliminare gli ultimi due caratteri; Il mio problema è che non riesco a dichiarare correttamente la mia funzione di sovraccarico.

Il mio codice è:

//the .h file
#pragma once
#include <iostream>

class Operators
{
public:
char *word;
int number;

Operators(void);
Operators(char str[], int num);
~Operators(void);
void Print(void);
friend char & operator<<(char &stream, int &nr);
};

#include "StdAfx.h"
#include "Operators.h"
#include <iostream>

Operators::Operators(void)
{
word = "";
number = 0;
}

Operators::Operators(char *str, int num)
{
word = str;
number = num;
}

Operators::~Operators(void)
{
}

void Operators::Print(void)
{
printf("nThe String: %s", word);
}

friend char & operator<<(char &stream, int &nr)
{

return stream;
}

// Operator_Overloading.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "Operators.h"
#include <conio.h>
#include <iostream>

using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
char value[] = "Hello";
Operators op(value, 2);


op.Print();

_getch();
return 0;
}

risposte:

4 per risposta № 1

Non è possibile sovraccaricare nessuno degli operatori se non coinvolgono, almeno, un tipo definito dall'utente. Il vostro caso d'uso prevede un char[N] e un int, cioè non è possibile sovraccaricare alcun operatore per questi argomenti.