2017-09-07 6 views
-3

Je suis un débutant en C++ et j'ai reçu cette affectation. Je dois utiliser ce fichier d'entête, dont j'ai fourni l'extrait pertinent. Le nom de la classe est PayoffAsianCall.Syntaxe de l'opérateur de parenthèses overload() en C++

PayoffAsianCall(double strike); 
virtual double operator()(std::vector<double> & spot) const; 
virtual ~PayoffAsianCall(){} 

Je veux attribuer des choses à l'opérateur dans mon dossier principal J'utilise

PayoffAsianCall &PayoffAsianCall::virtual double operator()(std::vector<double> & spot) const { do stuff here} 

mais cela n'a pas fonctionné. Quelqu'un peut-il m'expliquer la syntaxe correcte s'il vous plaît?

+0

[Cela devrait être couvert au début de tout texte C++ non frauduleux.] (Https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – user4581301

+0

Bienvenue dans Stack Overflow ! Il est difficile d'offrir des solutions lorsque l'énoncé du problème est simplement «ça ne marche pas». S'il vous plaît [modifier] votre question pour donner une description plus complète de ce que vous attendiez et comment cela diffère des résultats réels. Voir [demander] pour des conseils sur ce qui fait une bonne explication. –

Répondre

0

Il est toujours difficile de gagner du terrain pour les débutants et C++ n'est pas si facile à apprivoiser. Alors, voici quelques conseils pour vous:

Nous commençons par votre essai

PayoffAsianCall & PayoffAsianCall :: à double opérateur virtuel() (std :: vecteur & spot) const {faire des choses ici}

première: la première chose à noter est le type de retour, vous dites le type de retour est

PayoffAsianCall &

btw. vous devriez vraiment faire attention à la position du &. Dans ce cas, cela signifie referenece et sa référence PayoffAsianCall donc il aurait dû être PayoffAsianCall & et non PayoffAsianCall &.

Mais de toute façon: dans la définition de la classe que vous dites la valeur de retour est double il devrait donc être double:

à double PayoffAsianCall :: à double opérateur virtuel() (std :: vecteur & spot) const {do choses ici}

c'est déjà beaucoup mieux. Maintenant, nous avons besoin du nom de l'opérateur, puisque c'est un membre de la classe le nom inclut le nom de la classe virtual et double n'a rien à voir avec le nom, virtual est réservé à l'utilisation dans la définition de classe elle-même donc il n'y a pas de place ici et double est déjà pris en charge. Nous avons donc maintenant:

à double PayoffAsianCall :: operator() (std :: vecteur & spot) const {faire des choses ici}

Thats tous. Je recommande, comme mentionné précédemment, de placer correctement le &. Pas d'une manière std :: vector-spot de référence, mais un endroit std :: vecteur référence:

à double PayoffAsianCall :: operator() (std :: vecteur & spot) const {faire des choses ici}

fait.

+0

Merci, c'était très utile. Je suis un étudiant diplômé et pour une raison quelconque, les professeurs pensent qu'il est productif de faire en sorte que les gens essaient de comprendre cela en utilisant Google. J'apprécierais également une recommandation pour un bon texte de référence. Littéralement commencé à apprendre le C++ il y a environ 24 heures. Merci encore! – AliceinWonderLand

+0

@AliceinWonderLand Si la réponse était utile, veuillez ne pas oublier d'accepter la réponse. Une recommandation de livre n'est pas aussi facile que cela puisse paraître, mais mon pari serait "Programmation: principes et pratiques en utilisant C++" par le créateur de C++ Bjarne Stroustrup. La première mi-temps est facile mais le rythme augmente rapidement. Donc, il convient de commencer ainsi que d'obtenir des réponses plus approfondies après avoir acquis de l'expérience. – DrSvanHay