|
I was reading about structers in Oriely's c++ and well unfortunately I couldnt buy the book, but I took photos with my phone and what I did what write my own code and i get no errors when I compile it. This is my code:
#include "stdafx.h"
#include <conio.h>
using namespace std;
struct Virtual_Bin{
int Type;
int Quantity;
double Price;
} Produce_Choice;
int _tmain(int argc, _TCHAR* argv[])
{
double i;
Virtual_Bin Produce_Choice;
cout << " Fruit Type: "; cin >> Produce_Choice.Type;
cout << "Fruit Amount: "; cin >> Produce_Choice.Quantity;
cout << " Fruit Price: "; cin >> Produce_Choice.Price;
cout << " Type: " << Produce_Choice.Type << endl;
cout << " Quantity: " << Produce_Choice.Quantity << endl;
cout << "Price Each: " << Produce_Choice.Price << endl;
i = Produce_Choice.Quantity * Produce_Choice.Price;
cout << "Total for quantity of " << Produce_Choice.Quantity << ": " << i;
_getch();
return 0;
}
My Build:
------ Build started: Project: Virtual Structure, Configuration: Debug Win32 ------
Virtual Structure - up-to-date.
---------------------- Done ----------------------
Build: 1 succeeded, 0 failed, 0 skipped
My output on the screen is:
Fruit Type: Apple
Fruit Amount: Fruit Price: Type: -858993460
Quantity: -858993460
Price Each: -9.25596e+061
Total for quantity of -858993460: 7.95081e+070
|
|
|
|
|
try change to this:
typedef struct VIRTUAL_BIN {
int Type;
int Quantity;
double Price;
} Virtual_Bin;
|
|
|
|
|
Nevermind I figured it out, my:
struct VIRTUAL_BIN{
char Type[32]; <--- was of 'type' int, when it was supposed to be 'char'
int Quantity;
float Price;
} Produce_Choice; modified on Monday, March 8, 2010 9:50 PM
|
|
|
|
|
Dear developers
I'm finishing a simple but useful tool and have a serious problem - when I start my app and access windows registry to create value in RUN key or check if already created (for registering my app to startup) in Vista or 7 it always show a "Do you want to allow...to make changes to your computer?" message which must be confirmed. How can I get rid of this confirmation boxes?
When I confirm the needs, the app registeres itself into startup but after restart it don't run. The key and value is already in registry. This problem occurs on Win 7 and Vista, XP is fine. I'm writing to hkey_local_machine/software/microsoft/.../run
Need I upgrade my compiler to build versions for Vista or Win 7 which can run as Administrator?
I'm using my old but legal VC++ ver7 / 2003 and have C++ 2008 Express too.
Thank you
|
|
|
|
|
tibiz wrote: Need I upgrade my compiler to build versions for Vista or Win 7 which can run as Administrator?
you need to run the EXE as administrator (or at least with elevated permissions). or, turn off the UAC. but don't expect your users to do either.
|
|
|
|
|
no, I can't require from users to turn off the UAC. my app must run at startup like anything other (antivirus, mouse or bluetooth resident, ...). But it won't ...
|
|
|
|
|
Well, the UAC stuff is there SPECIFICALLY to make sure a user gives permission for such activities.
Let's assume that your application DoWonderfulThings.exe does something, erm, wonderful. Let's also assume that you have a backdoor to bypass UAC, so wonderful things can happen a lot. eg, an API called I_Am_Wonderful () .
Let's also assume that I write an application called DoEvilStuff. What's to stop me telling lies (I am evil, after all) and also using the I_Am_Wonderful () API?
This sort of control rightly belongs to the user - not to application developers who can't be trusted.
If all you are doing is checking if a registry value is already there, open the key with read access, not read and write. If you want to write there, then open the key again with write access, and cope with the warnings. This sort of thing should be done at setup time anyway. Or you could install a service that sits quietly consuming negligible resources, just to act as a background actor for you. Or... But all this stuff should require permission from the user... Did you pay for their machine? Didn't think so.
I'm probably a heretic, but I *like* UAC. It forces software writers to shape up, or look bad. My only regret is that it didn't exist earlier. I started 32 bit development and immediately started using HKLM/HKCU properly, and have very rarely hit any security issues.
Iain.
ps, rant over...I have now moved to Sweden for love (awwww).
|
|
|
|
|
ok, I disabled any registry checking but my app still won't run at windows startup on Vista and W7 On XP works properly. Any ideas?
|
|
|
|
|
Does you application consist of Manifest?
|
|
|
|
|
|
If application is running under vista or winows 7 it require manifiest to be added.
Check out the link [^]
A sample Manifest file
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Microsoft.Winweb.appname"
type="win32"
/>
<description>Your app description here</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
level="requireAdministrator" makes the application to be launched with administrative previlages.
|
|
|
|
|
the content of manifest file is linked to executabe by linker or must be distributed into the same folder where the app's executable is running from?
|
|
|
|
|
tibiz wrote: the content of manifest file is linked to executabe by linker or must be distributed into the same folder where the app's executable is running from?
Since, you are using VS2003, the manifest file can be linked to the executable.modified on Wednesday, March 10, 2010 12:19 AM
|
|
|
|
|
I have Dev-c++ version 4.9.9.2 on my computer. When I try to compile anything, it gives me the same error.
<br />
Makefile.win [Build Error] [main.o] Error -1073741515 <br />
I have two different copies of the program on my computer; one that is installed and a portable one and they both give me the same error. I know that it isn't my code because i use the portable one to compile code at school and it works fine there. In advance, thank you for your help.
Here is the compile log I got from trying to compile on the portable version:
<br />
Compiler: Default compiler<br />
Building Makefile: "J:\opengl\Makefile.win"<br />
Executing make...<br />
make.exe -f "J:\opengl\Makefile.win" all<br />
g++.exe -c main.cpp -o main.o -I"J:/Portables/Dev-CppPortable/App/devcpp/lib/gcc/mingw32/3.4.2/include" -I"J:/Portables/Dev-CppPortable/App/devcpp/include/c++/3.4.2/backward" -I"J:/Portables/Dev-CppPortable/App/devcpp/include/c++/3.4.2/mingw32" -I"J:/Portables/Dev-CppPortable/App/devcpp/include/c++/3.4.2" -I"J:/Portables/Dev-CppPortable/App/devcpp/include" <br />
<br />
make.exe: *** [main.o] Error -1073741515<br />
<br />
Execution terminated <br />
|
|
|
|
|
A wild guess: you have a problem with your PATH, the build tools aren't able to locate a DLL file they need, such as e.g. mspdb80.dll (and are not smart enough to provide a descent error message).
|
|
|
|
|
I have had this same issue in the past and I agree with ^ him, I would suggest dloading Microsoft Office C++ Express Edition 2008, you will have a more compatibility and the file size is very small.
|
|
|
|
|
I have a class and a constructor taking a reference argument. I will use this argument to initialize a reference class member:
CMyClass::CMyClass(MyType& MyArg)
: class_member(MyArg)
{//...}
Ok, that's fine but there's a problem. Even though I don't need a default constructor, the compiler requires one. I must initialize the class_member reference in the initializer list. Because there are no arguments, I don't have a valid argument to make an initialization. NULL is not accepted by the compiler as a repacement. I wonder if there is a workaround.
I'm aware I can replace the reference with a pointer and eliminate the need to make the initialization in the initializer list, but I'm curious if there is any way to have a default constructor under the given conditions ?
|
|
|
|
|
No. References are immutable once set, and have to be set on initialisation. Although…you could use a reference wrapper class like boost::ref[^].
CString(0xcccccccc) wrote: Even though I don't need a default constructor, the compiler requires one
Ummm - I might be slitting hairs here, but it's some library that requires the default constructor, not the compiler per se.Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
CodeProject MVP for 2010 - who'd'a thunk it!
|
|
|
|
|
Declare a private default constructor, but don't define it.
class CMyClass {
private:
MyType& ref_member;
CMyClass();
};
|
|
|
|
|
If a default constructor is required (by a library, as Stuart pointed out), then probably a private one won't be accepted. If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
And if it requires it because it is actually going to use it and you don't define it, I smell an unresolved external coming. You measure democracy by the freedom it gives its dissidents, not the freedom it gives its assimilated conformists.
|
|
|
|
|
True, but if it's just the compiler complaining because it can't create one then this should solve it. Though I suppose that's more likely with the copy constructor and operator= than the default constructor.
|
|
|
|
|
Graham Breach wrote: Though I suppose that's more likely with the copy constructor and operator= than the default constructor.
Good guess: usually the default constructor is required by serialization classes. If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
CPallini wrote: Good guess
From "Midway":
Captain Garth: Ten percent? That's one word in ten, Joe! You're guessing!
Commander Rochefort: [slightly hurt] We like to call it "analysis."You measure democracy by the freedom it gives its dissidents, not the freedom it gives its assimilated conformists.
|
|
|
|
|
error C2248: 'CMyOb::CMyOb' : cannot access private member declared in class 'CMyOb'
I failed to mention that, (supposing it's not important) my class is derived from the CObject MFC class.
Thanks for trying to help me.
|
|
|
|