Я просматривал вопросы и ответы перед публикацией, но большинство других вопросов предполагают более современную реализацию языка.
файл определения класса:
Код: Выделить всё
#ifndef SOFTWARE_HPP
#define SOFTWARE_HPP 1
#include
#include
class Software
{
char* name;
public:
Software( void );
Software( const char* Name );
~Software( void );
void Name( const char* Name );
char* Name( void ) const;
};
void GetSoftware( Software* (&software)[], const unsigned short ArraySize );
#endif
Код: Выделить всё
#include "software.hpp"
const unsigned short _MAX_SOFTWARE_NAME = 21;
Software::Software( void )
{
name = new char[_MAX_SOFTWARE_NAME + 1];
name[0] = NULL;
}
Software::Software( const char* Name )
{
name = new char[_MAX_SOFTWARE_NAME + 1];
strncpy( name, Name, _MAX_SOFTWARE_NAME );
}
Software::~Software( void )
{
delete[] name;
}
void Software::Name( const char* Name )
{
if ( strlen( Name ) < _MAX_SOFTWARE_NAME ) {
strncpy( name, Name, _MAX_SOFTWARE_NAME );
}
}
char* Software::Name( void ) const
{
return name;
}
void GetSoftware( Software* (&software)[], const unsigned short ArraySize )
{
for ( short i = 0; i < ArraySize; ++i ) {
software[i] = new Software( "SoftwareName" );
}
}
Код: Выделить всё
#include
#include
#include
#include "software.hpp"
int main( int argc, char* argv[] )
{
Software* software[16] = { NULL };
GetSoftware( software, 16 );
for ( int i = 0; i < sizeof( software ) / sizeof( software[0] ); ++i ) {
printf( "Software %s", software[i]->Name() );
}
}
Одно интересное замечание: если я запускаю свое приложение из своего На машине разработки под Windows NT символы печатаются нормально, но при запуске под настоящей DOS я получаю искажения.
Кстати, это проект модели средней памяти. Есть идеи, что я делаю не так?
Подробнее здесь: https://stackoverflow.com/questions/787 ... rings-in-c
Мобильная версия