954,492 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

loop and class problem

lost!!! I took a homework assignment that worked written in just main and for practice I wanted to make them classes with pointers and have one derived class of base. Although the while loop, for the most part worked before it was turned into a class, it now does not work. I tried using If statement but I am haveing problems constructing. Now I'm totally at a lose as what to do.


error C2664: 'strcmp' : cannot convert parameter 1 from 'char *[20]' to 'const char *
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
C1903: unable to recover from previous error(s); stopping compilation
Error executing cl.exe.

sample.obj - 2 error(s), 0 warning(s)

*************************************************************

#include <iostream.h>	// This is used for the cout's and cin's
#include <fstream.h>	// This is used to read from and write to files
#include <stdlib.h>		// This gives us the exit(1) command
#include <string.h>	
	

class file1
{

protected:
	char *filename[12];
	char *name[20];


public:
	file1()
	{ 	cout << "Enter the filename: ";
		cin >> *filename;
		cout << endl; 
	}

	void file();
	//void display();
};


void file1::file()
{



// Creating an instance of outbound data
	ofstream outfile;

	outfile.open(*filename, ios::app);

	if (outfile.fail())
	{
		cout <<"The file failed to open" <<endl;
		exit(1);
	}


	cout << "Enter names to the file called: "<< *filename <<endl;
	cout << "Enter end to stop entering names." << endl;

	
	cout << endl;


//loop to enter names and keep count
//section having problems with!
while(strcmp(name, "end"))
{
	

	int count = 0;
	cout << "Enter names: " << endl;
	cin >>  *name;}

	
	//send data to outfile
	outfile << *name;

	outfile << "\n";

	count++;
	cout << endl;

	
}

	// Closing the outfile to free up memory
	outfile.close();

return ;
}
class filederived : file1
{

public:
	char derived();

}

filederived::derived()
{


	int count = 0;
// Creating an instance of inbound data
	ifstream infile;

	// Opening the infile "filename" for reading
	infile.open(*filename);

	//to view amount of names entered
	cout << "You have entered " << count << " names " << "in file " << *filename << "\n\n";

	while(count>1)
	{
	// Reading the contents of "filename" 
	infile >> *name;

	//to view names entered into the file
	cout <<"The name you have entered is: " << *name << endl;
	count--;

	return ;
	}

	
	infile.close();
	return ;
}
	
int main()
{
	
	file1 a;
	filederived b;

	a.file();
	

	b.derived();

	return 0;
}



:rolleyes:

cap2361
Newbie Poster
13 posts since Feb 2005
Reputation Points: 10
Solved Threads: 0
 

strcmp parameters are invalid like the compiler says! I would convert to using the std::string class found in as it is much easier to use and has most of its operators overloaded so you can do things like:

using namespace std;

string str1 = "This is a ";
str1 += "message";
cout << str1 << "\n"; // prints "This is a message"
1o0oBhP
Posting Pro in Training
445 posts since Dec 2004
Reputation Points: 16
Solved Threads: 6
 

Look at the lines:

protected:
char *filename[12];
char *name[20];

I assume U just need two variables for holding two strings, not a tables of 12 (20) pointers to char. If so, try to remove * before filename and name and fix other errors by yourself (there are several of them :) )

Index
Newbie Poster
15 posts since Jan 2005
Reputation Points: 10
Solved Threads: 1
 

If you must use char * (c-style) strings then define them as

char *string1;
char *string2;

string1 = (char*) new char[length + 1]; // allocate memory for a string of a given length. the + 1 is for the \0 character

delete [] string1; // deletes allocated memory

the strings should be ok to pass to c string functions

1o0oBhP
Posting Pro in Training
445 posts since Dec 2004
Reputation Points: 16
Solved Threads: 6
 

I M FACING BELOW PROBLEM WHEN PROGRAMMING IN CLASS IN C++. PLZ SORT OUT THIS
WARNING IS:
-- FUNCTION SHOULD BE EXPANDED INLINE
class one
{
public:
int a,b,c;
void show()
{
for(i=0;i<=5;i++)
{
cout<<"sam";
}
}
};

void main()
{
one obj;
obj.show();
}

program is executing but compiler is showing warning i.e.

FUNCTION CONTAINING FOR ARE NOT EXPANDED INLINE.
IF ANY ONE HAVE IDEA ABOUT SAME THEN PLZ SORT OUT MY PROBLEM

sunrise_cool
Newbie Poster
2 posts since Jul 2010
Reputation Points: 10
Solved Threads: 0
 

I M FACING BELOW PROBLEM WHEN PROGRAMMING IN CLASS IN C++. PLZ SORT OUT THIS
WARNING IS:
program is executing but compiler is showing warning i.e.

FUNCTION CONTAINING FOR ARE NOT EXPANDED INLINE.
IF ANY ONE HAVE IDEA ABOUT SAME THEN PLZ SORT OUT MY PROBLEM
class one
{
public:
int a,b,c;
void show()
{
for(i=0;i<=5;i++)
{
cout<<"sam";
}
}
};

void main()
{
one obj;
obj.show();
}

program is executing but compiler is showing warning i.e.

FUNCTION CONTAINING FOR ARE NOT EXPANDED INLINE.
IF ANY ONE HAVE IDEA ABOUT SAME THEN PLZ SORT OUT MY PROBLEM

sunrise_cool
Newbie Poster
2 posts since Jul 2010
Reputation Points: 10
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You