|
Hi
Thanks for replay. I downloaded debugview application it is also not display issue.
Still i couldn't identify the issue. Please help me
|
|
|
|
|
Try to log: at first step log the main steps of the running application, then implement smaller logging steps and so on...
|
|
|
|
|
Hello !
I have 2 classes Books and Author. On of members of Books is of type Author.
On Class Books I want to have a Constructor that takes all the parametres for book and for author :
This is my code :
class author
{
private :
string name;
string email;
public :
string get_name(){return name;}
string get_email(){return email;}
void set_name(string name){this->name=name;}
void set_email(string email){this->email=email;}
author(string name,string email)
{ this->name=name;
this->email=email;
}
}
class book
{
private :
string title;
int year;
author auth;
public:
string get_title(){return title;}
int get_year(){return year;}
void set_title(string title){this->title=title;}
void set_year(float year){this->year=year;}
book(string title, int year):author(string name,string email)
{
this->title=title;
this->year=year;
???????
}
}
I don't know how can i change the constructor of book in order that it takes all the perameter for book and for the author?
Thank you !
|
|
|
|
|
To answer your question
class book {
...
book(string title, int year, string name, string email) : auth(name, email) {
...
}
};
Some things for you to think about:
1) If you have getters and setters for all your private members, how is this different than making the private members public?
2) Although names don't usually change change (Ferdinand Lewis Alcindor Jr might disagree), emails can and do. What happens if you have a large collection of books and want to change the email of an author? There might be a better way to structure your data.
|
|
|
|
|
@1) he doesn't have a getter and setter for book::author
@2) agreed. Either the class author should really be a class author_reference, and name and email are just a (n unsuitable) choice of a unique reference to this specific author which is represented within a separate class and my contain more (private) data like home address and preferred brand of peanut butter. Or the class author really represents an actual author, in which case (s)he should only be referenced, not defined as a data member. After all, the author shouldn't die just because a book is burned...
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
|
|
|
|
|
Besides an author having multiple books, a book can also have multiple authors (including commentators).
"(I) am amazed to see myself here rather than there ... now rather than then".
― Blaise Pascal
|
|
|
|
|
Presumably this is homework.
At any rate a "copy constructor" sounds quite possibly what the homework really wants you to come up with. Although perhaps the assignment is to let you copy everything first and then next demonstrate what a copy constructor is.
|
|
|
|
|
The [[nodiscard]] attribute can be use either for function return and for struct.
Both will return the same warning; Is there a better use case for the attribute ?
Either tag the struct:
struct [[nodiscard]] Patate
{
int patate;
};
Patate f1()
{
return Patate();
};
void main()
{
f1(); }
or tag the function return.
struct Patate
{
int patate;
};
[[nodiscard]] Patate f1()
{
return Patate();
};
void main()
{
f1(); }
I'd rather be phishing!
|
|
|
|
|
Your function is returning by value, which your code is ignoring (discarding).
A Google search for "attribute nodiscard" provides the answer.
C++ attribute: nodiscard (since C++17) - cppreference.com[^]
INTP
"Program testing can be used to show the presence of bugs, but never to show their absence." - Edsger Dijkstra
"I have never been lost, but I will admit to being confused for several weeks. " - Daniel Boone
|
|
|
|
|
I know that, but the description is not clear about the differences if any between the nodiscard for the struct vs for the function.
I'd rather be phishing!
|
|
|
|
|
Well,
That attribute is weakly defined in section 10.6.7 of the standard. You can go read it yourself. The behavior is intentionally vague using words like 'encouraged' and 'discouraged'. Regardless of whether it's applied to a function or class there is no difference defined.
In fact if you carefully read the document no behavior has been defined. The only section without 'encouraged' and 'discouraged' is section 1 where the attribute token "[[nodiscard]]" itself is defined.
In other words in C++17 the only guarantee is that your compiler understand the [[nodiscard]] attribute. No behavior is defined.
Best Wishes,
-David Delaune
|
|
|
|
|
There is no difference you are discarding something (you didn't save it) that was marked as non discard.
The whole idea should have been euthanized, it is what you get when you get a committee to talk about non existent problems.
There are half a dozen real problems but they waste time on that junk.
Here is the best template to fix [nodiscard]
template < typename T >
void ignore(T&&) {}
Try it on your code
ignore(f1());
Now don't make me do it .... if I want to discard something I will
In vino veritas
modified 5-Apr-19 9:40am.
|
|
|
|
|
LOL
I think someone got tired of programmers who do not follow the good practice of checking returned values and decided to provide a standard way to warn them. The problem with that is those same programmers also tend to ignore warnings.
INTP
"Program testing can be used to show the presence of bugs, but never to show their absence." - Edsger Dijkstra
"I have never been lost, but I will admit to being confused for several weeks. " - Daniel Boone
|
|
|
|
|
John R. Shaw wrote: ... same programmers also tend to ignore warnings.
But, but, if it compiles, I'd then not need to worry about the warnings, right?!
|
|
|
|
|
Hope can post this question on this forum.
I was under believe that triplet means three in format:
CPU-company-OS
So why is config.guess adding -gnu as fourth value?
I do not see any tangible benefits in reporting "gnu".
$ sudo bash config.guess
x86_64-pc-linux-gnu
Cheers
|
|
|
|
|
to a certain extent its the GNU foundation being picky. the systtem is "linux-gnu" i.e. a linux kernel with GNU infrastructure tools. AFAIK there's no other tools running on a linux system, but that doesn't mean there couldn't be.
why are you using sudo in this situation? it shouldn't be neccessary
|
|
|
|
|
Using sudo because it works.
Now I may have to modify the code to look for "linux-gnu", See no issues doing that.
|
|
|
|
|
Vaclav_ wrote: Using sudo because it works.
If it only works with sudo then you've seriously borked your system. If commands work without sudo, then please stop doing that ... eventually you're going to do something like
$ cd /bin
do some more things, time passes, you forget where you are ...
$ sudo rm * ##whoops ... there goes everything in /bin .. time to recover from backups or re-install, more likely
Don't tell me it will never happen to you ... it just hasn't happened to you yet. Something like that has happened to almost everyone that has had root privileges on unix or unix-line system system. That's partially why login as root is generally discouraged. But if you insist on prefixing almost everything with sudo, you might as well just enable root login on your system and go from there.
|
|
|
|
|
|
so that would be armXX-unknown-linux-uClibc, then? Interestingly FreeBSD (i386, 9.1 - old, i know) reports i586-unknown-freebsd9.1. No mention of the the c-library involved.
|
|
|
|
|
Well,
Rather than speculate about what it could be let's just take a direct look at the latest source code;
gcc/config.guess at master · gcc-mirror/gcc · GitHub
case "$UNAME_SYSTEM" in Linux|GNU|GNU/*)
# If the system lacks a compiler, then just pick glibc.
# We could probably try harder.
LIBC=gnu
#if defined(__UCLIBC__)
LIBC=uclibc
#elif defined(__dietlibc__)
LIBC=dietlibc
#else
LIBC=gnu
#endif
EOF
eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
# If ldd exists, use it to detect musl libc.
if command -v ldd >/dev/null && \
ldd --version 2>&1 | grep -q ^musl
then
LIBC=musl
fi
;;
esac
So looks like the possible values are:
Best Wishes,
-David Delaune
|
|
|
|
|
It is actually even more convoluted.
If I want to cross-compile - in Eclipse IDE I add "prefix "arm-linux-gnueabi- which translates to "arm-linux-gnueabi-gcc"
That is the actual name of executable cross compiler, not a meaningless triplet.
However , config.guess on Raspberry Pi (armv7l) is "armv7l-unknown-linux-gnueabihf".
That implies that the last member is not just some political peeve.
All this makes the package I am working on useless ( straight from the box) since it does not use the latest version of config.guess in the first place and has "configure" script with no code provisions to analyze the overgrown triplet.
|
|
|
|
|
Yeah,
Vaclav_ wrote: If I want to cross-compile - in Eclipse IDE I add "prefix "arm-linux-gnueabi- which translates to "arm-linux-gnueabi-gcc"
Reviewing the config.guess source I can see that it will append libc characteristics.
Vaclav_ wrote: All this makes the package I am working on useless ( straight from the box) since it does not use the latest version of config.guess in the first place and has "configure" script with no code provisions to analyze the overgrown triplet. Look, as you probably already know I am primarily a Microsoft technology guy. I left the Linux world over 15 years ago so I am extremely rusty on modern Linux. But I am currently using Linux again on a daily basis and cross-compiling my project so that it will run in Windows, Linux and hopefully any other embedded environments.
Maybe you should try my technique for cross compiling... I just build a quick chroot environment and custom-build the toolchain for whatever platform I am targeting. That's the way I've always cross compiled... but maybe I am using outdated techniques.
Best Wishes,
-David Delaune
[EDIT]
If you are feeling lazy I found an automated script on GitHub that should get you a working build environment for targeting the Raspberry Pi.
Creates a chroot environment for creating custom Raspbian images and cross-compiling programs for the Raspberry Pi.
|
|
|
|
|
If your coming thru a makefile you can pick the compiler OS inside the makefile I always do it because
I need to swing between RM and DEL and the directory slash in the makefile
You can change the compiler binary in that conditional as well.
ifeq ($(OS), Windows_NT)
#WINDOWS USE THESE DEFINITIONS
RM = -del /q /f
SLASH = \\
else
#LINUX USE THESE DEFINITIONS
RM = -rm -f
SLASH = /
endif
So ......
ifeq ($(OS), Windows_NT)
#WINDOWS USE THESE DEFINITIONS
RM = -del /q /f
SLASH = \\
CC = arm-none-eabi-
else
#LINUX USE THESE DEFINITIONS
RM = -rm -f
SLASH = /
CC = arm-linux-gnueabi-
endif
In vino veritas
modified 1-Apr-19 8:25am.
|
|
|
|
|
In object-oriented programming, why is combination better than inheritance in code reuse, for example, given the coordinates of two points to calculate the distance between two points, should the Distance class be inherited from the Point class or an object of the Point class as a data member of the Distance class?
|
|
|
|