What I want to do is simple, however I can not find a way to do it in c++ and I don't know for sure that it is possible. I want to create a function that creates a simple short-hand for printf(x); Such as:
void echo(x){ printf(x); }
But when I call the function:
echo "hi";//I want it to look like this //instead of: echo("hi");// like this.
I have a function (name Callback), with take some parameter( name Arg). I want to create it before, pass it to other class ( class B). And in class B, call the Callback function with Arg paramater. It's something like this:
class A { void A::doSomething(int a, bool b){//dosomething}; void A::setCallback(B b) {//I don't know how to do this};
[Code].....
How can i do this? And what happen with I want B can get more type of callback function, which mean I don't know the type of Callback's paramater?
error C3867: 'WordParsor::Form1::PutUpfrmIO': function call missing argument list; use '&WordParsor::Form1::PutUpfrmIO' to create a pointer to memberc:userskingc++wordparsorwordparsorForm1.h... and the suggestion fix generate another error.
One person suggested the gcroot<> object wrapper... but I do not know how to modify/declair the function or its argument type.
This code from [URL] as it is gives compile error I can't understand.
#include <iostream> using namespace std; class Rectangle { int width, height;
[Code] ....
Gives error
(g++ first.cpp) first.cpp: In function ‘int main()’: first.cpp:14:38: error: no matching function for call to ‘Rectangle::Rectangle(<brace-enclosed initialiser list>)’
Every time I try to compile this, I get the error message, "error: no matching function for call to" on lines 18, 45, and 46. Basically every time I try to call on the function sales and printStock. I don't know what the message means or why I get it.
#include <iostream> #include <fstream> #define N 10 using namespace std;
My errors are at the end of the program in two function calls within the definition of the InsertByValue function. g++ does not seem to recognize NumArray as a valid parameter.
#include <iostream> #include <assert.h> using namespace std; const int CAPACITY = 20;
/* Displays the content of an int array, both the array and the size of array will be passed as parameters to the function @param array: gives the array to be displayed @param array_size: gives the number of elements in the array */ void DisplayArray (int array[], int array_size);
I'm familiar with function pointers as the method to pass a function as an argument to another function. However, I recently encountered some other syntax. I have seen in multiple times and in books,so I know it is probably not a syntax error. But I am not totally sure.
#include <iostream> void Function1() { std::cout << "Function1"; } void Function2(void aFunction()) { aFunction(); } // make a param that describes the function the will be given // as a param (return type, identifier,
Example radix sort function to sort an array of 64 bit unsigned integers. To allow for variable bin sizes, the array is scanned one time to create a matrix of 8 histograms of 256 counts each, corresponding to the number of instances of each possible 8 bit value in the 8 bytes of each integer, and the histograms are then converted into indices by summing the histograms counts. Then a radix sort is performed using the matrix of indices, post incrementing each index as it is used.
Code: typedef unsigned long long UI64; typedef unsigned long long *PUI64; PUI64 RadixSort(PUI64 pData, PUI64 pTemp, size_t count) { size_t mIndex[8][256] = {0}; /* index matrix */ PUI64 pDst, pSrc, pTmp; size_t i,j,m,n; UI64 u;
I have a piece of code that sorts data based on some metric. The some metric is something I now want to make flexible so I can easily switch between and compare metrics. To do this, I want to pass the function to use as a parameter to the method that does the sorting (and other stuff). However, I'm having problems figuring out the syntax. Also, I think my [temporary] organization of code is violating a lot of basic code design principles.
To make the function pointer passable, I defined the "typename" in the header where the function is located (it is part of a struct, "Data"):
// Below the struct definition of Data typedef double (Data::*CostF)(unsigned l, double W) const;
The two example functions I want to use are defined in that struct ("Data"):
// Inside the struct definition inline double someExampleCost(unsigned l, double W) const { // Returns some basic calculation }
The function that uses it is part of a different class (that holds a reference to the first class, in case that matters; I feel like I'm doing something odd here, because I'm binding a member function in the definition/passing, but never referencing the object). It looks like this:
// Inside another class ("Foo") inline void DoSomeStuff(double& ECost, double& TCost, CostF cost) { // Irrelevant stuff here std::sort(vector.begin(), vector.end(), [&](unsigned a, unsigned b){ return (*cost)(a, W) < (*cost)(b, W); }); // More irrelevant stuff here }
The error shown is "operand of "*" must be a pointer". If I remove the '*': [code]return cost(A, W) < cost(b, W);
the error becomes: "expression must have a (pointer-to-)function type."
The call to this function is, currently, just in the main function, as I'm just testing before I wrap it into real code. It looks like this:
// In main Foo bar; // Make an object of the struct that has the "sorting" function CostF costFunction = &Data::someExampleCost; // Bind to the Cost function bar.DoSomeStuff(varA, varB, costFunction);
This bit shows no errors by itself. So, my questions:
a) Clearly I'm missing the insight into Function Pointers. I'm comfortable with regular pointer stuff, but I can't wrap my head around FPs, partly due to the awkward syntax.
b) I'm very uncomfortable with the fact that I'm binding a member function of a class, but never try to reference an actual object of that class. This is probably a big part of why it's not working, but I can't seem to bind a function belonging to a specific object. I thought of doing
// In the main again Data d; // Construct the object, which contains big lookup tables Foo F(d); // Construct the object, which only holds a reference to a Data object CostF costFunction = &d.someExampleCost; // Bind to the Cost function of that object
but that doesn't work ("a pointer to a bound function may only be used to call the function").
I've just recently started to learn C++, and I'm encountering some errors I can't seem to figure out.
InventoryItem.h:
Code: #pragma once class InventoryItem { public: InventoryItem(string name, int amount); ~InventoryItem(void); string getName(void); int getAmount(void);